这个问题是关于Javascript for循环,我一直有一些奇怪的行为。
我的For循环目前看起来像这样:
var UnitAmount = 2;//(value verified, yet not declared like this)
var DamageAmount = [1,3];//(value verified, yet not declared like this)
function forcerefresh () {
for( i=0 ; i < UnitAmount ; i++ ) {
//(10 lines of Stuff)
var check = 0;
for (c = 0; c < DamageAmount[i] ; c++ ) {
debug[0] = damage[i][c].getElementsByClassName("writedamage")[0];
debug[1] = damage[i][c];
debug[2] = unit[i];
check = check + 1;
console.info("Unit:",i,"Loop:",c,"Debug:",debug,"Check:",check, "Race:",unitrace[i], unit[i].dataset.race);
alert("Debug:"+ debug );
damageCalc(damage[i][c].getElementsByClassName("writedamage")[0],damage[i][c],unit[i]);
}
}
}
在这里,调试,警报,检查和控制台写入调用已经添加,以尝试找到问题 - 我在这里得到一个无限循环。
进入控制台的输出显示,虽然i常量按预期行走,但c迭代计数从0开始,跳转到2,然后保持2 - 并且由于DamageAmount [1] = 3,这会创建无限循环。并且c可能粘贴在值2处,检查值确实会在迭代中向上走。
至于所涉及的变量数量,我已经一次又一次地使用控制台检查,并且所有这些都已定义,以及我期望的值。该代码位于http://age-of-wonders-3.wikia.com/wiki/MediaWiki:Units.js,但如果要求任何部分,我当然会在此处发布。
感谢任何帮助!
答案 0 :(得分:0)
尝试在阵列上使用代替或 .forEach