如何使用循环创建多个 Javascript DataTransfer 对象并访问它们

问题描述 投票:0回答:1

我想在 for 循环中创建多个 DataTransfer 对象然后使用它们。但它不起作用。

var cars = ["test1", "test2", "test3", "test4"];

for(let i = 0; i < cars.length; i++) {
    var cars[i] = new DataTransfer();
}

这显示:

Uncaught SyntaxError: Unexpected token '['

然后我想根据 id 或类来使用它们,例如:

<span id="testing" value="test1"></span>


var f = new File([""], "filename.txt", {type: "text/plain"})
$("#testing").attr('value').items.add(f);

通过上面我得到这个错误:

Cannot read properties of undefined (reading 'add')

我不知道我错过了什么。预先感谢!

javascript data-transfer-objects
1个回答
0
投票

This is showing: Uncaught SyntaxError: Unexpected token '['

问题是你在 for 循环中的语句

var cars = ["test1", "test2", "test3", "test4"];

for(let i = 0; i < cars.length; i++) {
    // You are trying to declare a variable name here, and brackets are not valid characters in variable names
    var cars[i] = new DataTransfer();
}

如果您只是尝试设置数组每个索引处的值,则可以直接设置它们而无需声明变量:

var cars = ["test1", "test2", "test3", "test4"];

for(let i = 0; i < cars.length; i++) {
    cars[i] = new DataTransfer();
}

With above I get this error : Cannot read properties of undefined (reading 'add')

这是因为你的跨度的值是一个字符串“test1”,它没有名为 items 的方法/属性。我只能猜测您正在尝试在那里使用 DataTransfer 对象,因此您需要以不同的方式访问它。也许在你的 JavaScript 中你可以设置一个带有键的对象来访问你的对象:

var cars = ["test1", "test2", "test3", "test4"];
var dataTransfers = {};

for(let i = 0; i < cars.length; i++) {
    // dataTrasnfers.test1 = new DataTransfer() when i = 1
    dataTransfers[cars[i]] = new DataTransfer();
}

从那里开始,

dataTransfers.test1, dataTransfers.test2, dataTransfers.test3, dataTransfers.test4
都是有效的。您可以继续从跨度值中获取这些名称。

© www.soinside.com 2019 - 2024. All rights reserved.