是否可以使用Javascript动态创建变量

时间:2019-05-17 06:41:31

标签: javascript variables

我有以下问题: 我必须创建这样的Veiables:

var qrcode_1 = my_CreateQRcode(document.getElementById("qrcode_1"));
var qrcode_2 = my_CreateQRcode(document.getElementById("qrcode_2"));
var qrcode_3 = my_CreateQRcode(document.getElementById("qrcode_3"));
.....

变量的数量可以从1到60。 ist可以根据实际所需变量的数量动态创建这些变量。 我要确定代码中的60个变量?

3 个答案:

答案 0 :(得分:1)

您可以改用数组:

var qrcodes = Array.from(
  { length: 60 },
  (_, i) => my_CreateQRcode(document.getElementById('qrcode_' + (i + 1)))
)

但是最好使用类代替数字索引ID,因此您可以执行类似的操作

var qrcodes = Array.from(
  document.querySelectorAll('.qrcode'),
  my_CreateQRcode // second argument to Array.from is a mapper function
);

请注意,类似数组的结构是零索引,而不是单索引,因此,例如,qrcodes[0]对应于找到的第一个元素并通过发送。{{1 }}。

答案 1 :(得分:0)

如果出于某种原因您确实需要那么多变量(如其他人所指出的,您实际上应该使用数组),则可以通过以下方式实现这一点:

for (let i = 60; i > 0; i--) { 
  window["qrcode_"+i] = my_CreateQRcode(document.getElementById("qrcode_"+i)) 
};

请注意,在这种特定情况下,这将覆盖已经存在的变量(浏览器会自动为每个元素创建一个全局变量,该变量在该值的名称下具有唯一的id值,该变量具有对该元素的引用)。

答案 2 :(得分:0)

您可以为html元素创建类。

示例:

In HTML->
    <div class="qrcode"></div>....<div class="qrcode"></div>
IN JS ->
    var qrcodes= document.getElementsByClassName(".qrcode");
    for(i=0;i<=qrcodes.length;i++){
           log(qrcodes[i]);
        }