等号左侧的JavaScript循环变量

时间:2017-09-23 00:28:30

标签: javascript

我正在循环结果并将它们写成html。

我想在等号的最左边增加数字1 - 绑定 -  A_Inside_Bus_1_div,A_Inside_Bus_2_div,A_Inside_Bus_3_div等..

我应该怎么做?

for (var i = 0; i <= 4; i++) {
   A_Inside_Bus_1_div.innerText = i + ". " + snapshot.child("0/A_Inside_Bus " + i).val();
   A_Inside_Bus_1_Comments_div.innerText = snapshot.child("0/A_Inside_Bus " + i + " Comments").val();
            }

4 个答案:

答案 0 :(得分:1)

如果这些变量实际上是DIVsm的ID,并且取决于ID转换为全局变量的事实,您可以使用document.getElementById()来访问它们。

for (var i = 0; i <= 4; i++) {
   document.getElementById('A_Inside_Bus_' + (i+1) + '_div').innerText = i + ". " + snapshot.child("0/A_Inside_Bus " + i).val();
   document.getElementById('A_Inside_Bus_' + (i+1) + '_Comments_div').innerText = snapshot.child("0/A_Inside_Bus " + i + " Comments").val();
}

答案 1 :(得分:0)

这样做:

if let name = bestgame.text, 
  !name.isEmpty {
    label.text = "hello" + name
}

在继续其余操作之前,例如编辑var A_Inside_Bus_div = []; var A_Inside_Bus_Comments_div = []; ,您需要创建这些对象。只有在那之后你才能做到:

.innerHTML

正如你所说,这只是一个关于你应该如何“去”的想法。

答案 2 :(得分:0)

不要这样做。试图让变量名做你正在尝试做的只会导致不必要的混乱代码。

将所有元素粘贴到数组中:

var elems = [
    A_Inside_Bus_1_div
    A_Inside_Bus_2_div
    ... 
];

var comments = [
    A_Inside_Bus_1_Comments_div
    A_Inside_Bus_2_Comments_div
    ... 
];

然后只需索引数组:

for (var i = 0; i <= 4; i++) {
   elems[i].innerText = i + ". " + snapshot.child("0/A_Inside_Bus " + i).val();
   comments[i].innerText = snapshot.child("0/A_Inside_Bus " + i + " Comments").val();
}

这是您如何使用当前设置执行此操作的示例。请注意,它可以清理。如果elems数组的每个元素总是在comments中有一个伙伴,那么将它们组合在一个对象中会更有意义,并且只有一个数组。

另请注意,在循环中填充数组更有意义。为了简洁起见,我只是在这里对数组进行了硬编码。我不确定你最初是如何创建这些元素的。它们应该被创建并直接放入数组中,而不是命名它们并在以后添加它们。

答案 3 :(得分:0)

有几种方法可以做到这一点,但它们往往涉及一些非常糟糕的习惯,比如使用eval或将变量附加到全局对象,以便您可以使用字符串访问它们:

var a = 1;
window['a']; //1

但是有更好的选择,最常见的可能是将它们存储在等长阵列中:

var divs = [div1, div2, div3];
var items = ['cat', 'dog', 'fish'];

items.forEach(function(element, index){
    divs[index].innerText = items[i];
});

您还可以查看构建单个对象数组:

var objects = [{div: div1, item: 'cat'}, {div: div2, item: 'dog'}, {div: div3, item: 'fish'}];

for object in objects {
    object.div.innerText = object.item;
}