Javascript 应用带有变量的循环

Javascript 应用带有变量的循环,javascript,for-loop,Javascript,For Loop,我试图压缩我的代码,因为我有很多重复的编码发生。我需要多次应用相同的示例。我想创建一个for循环,但我的变量也需要增加。现在我的变量在增加,但我无法将单元格数据实现到变量中。我想我是双重赋值var h。我想不出怎么避开这件事。谢谢你的帮助 用于循环 for (var j = 2; j<15; j++){eval("var polebrea" +j); var h = ("polebrea" +j) } h = document.getElementById("part1Table"

我试图压缩我的代码,因为我有很多重复的编码发生。我需要多次应用相同的示例。我想创建一个for循环,但我的变量也需要增加。现在我的变量在增加,但我无法将单元格数据实现到变量中。我想我是双重赋值var h。我想不出怎么避开这件事。谢谢你的帮助

用于循环

for (var j = 2; j<15; j++){eval("var polebrea" +j); 
var h = ("polebrea" +j) 
} 

h = document.getElementById("part1Table").rows[10].cells[2].innerHTML;
(续至第15页)

插入变量

<script>document.write(polebrea2)</script>
document.write(polebrea2)

虽然做你正在做的事情不一定是好的实践,但你可以尝试以下方法:

var createVariable = function( index ){
    var variableName = "polebrea" + index;
    var objName = document.getElementById("part1Table").rows[10].cells[index].innerHTML;
    return (variableName + " = " + objName + ";");
};

for (var j = 2; j<15; j++){
        var objToWrite = createVariable(j);
        console.log( objToWrite );
} 
var createVariable=函数(索引){
var variableName=“polebrea”+指数;
var objName=document.getElementById(“part1Table”).rows[10]。cells[index]。innerHTML;
返回(variableName+“=”+objName+“;”);
};

对于(var j=2;j忽略设计教条….使用属性访问的字符串索引形式设置变量:

// window is a bad place for this....you should probably put it on another object e.g. var polbreas = {}; 
for (var i = 2; i<15; i++){
    window["polbrea"+i] = document.getElementById("part1Table").rows[10].cells[i].innerHTML;
}
//窗口是一个不好的地方……您可能应该将它放在另一个对象上,例如var polbreas={};

对于(var i=2;我不使用
eval
。创建一个可以索引的数组。使用一个对象来存储它们,而不是为每个数组创建一个新变量。
对象[“polebrea”+j]
具有动态命名的变量是某个地方设计不好的标志。使用可以容纳某个集合的数据结构,如对象或数组。感谢Joshua,你的答案与我所寻找的完全一致,并且它可以在不改变任何内容的情况下工作。实际上,我自己也曾几次接近这一点,但不确定是什么原因re我错了。现在我所要做的就是使用(document.write(polbrea2)),它给了我正确的单元格。我还有其他if语句,可以提取其他数字。
// window is a bad place for this....you should probably put it on another object e.g. var polbreas = {}; 
for (var i = 2; i<15; i++){
    window["polbrea"+i] = document.getElementById("part1Table").rows[10].cells[i].innerHTML;
}