我在JavaScript中有一个for循环,它定期跳过间隔,我无法确定原因。
console.log(parseInt($('input.num-to-add').val()));
numToAdd = parseInt($('input.num-to-add').val());
console.log(numToAdd);
for(i=0;i<numToAdd;i++){
console.log('Running loop for ' + i + '...');
// the following code won't mean much
// but it was noted that the full code should be present
table.find('tbody').prepend(data.html);
var row = table.find('tbody #add-location-row').first();
rowInit(row);
}
正如你所看到的,我是console.log
几乎每一步,我都无法确定问题。控制台输出中很好地说明了问题本身。例如,如果input.num-to-add
的值为8
,这就是我在控制台中看到的内容:
8
8
Running loop for 0...
Running loop for 6...
Running loop for 7...
我真的看不出这里会出现什么问题。在我看来,这是非常简单和基本的代码,但它在某种程度上打破我根本无法确定。
答案 0 :(得分:4)
正如许多其他人已在评论部分中指出的那样,肯定会发生这种情况,因为您使用名为i
的全局变量作为循环变量。如果在i
中使用相同的全局变量rowInit
,则会干扰此循环。解决方案很简单,总是使用正确的范围变量:
for(var i=0;i<numToAdd;i++){
console.log('Running loop for ' + i + '...');
// the following code won't mean much
// but it was noted that the full code should be present
table.find('tbody').prepend(data.html);
var row = table.find('tbody #add-location-row').first();
rowInit(row);
}
甚至更好:
for(let i=0;i<numToAdd;i++){