对于循环行为

时间:2014-12-17 23:57:20

标签: javascript for-loop

这个问题是关于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,但如果要求任何部分,我当然会在此处发布。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

尝试在阵列上使用代替 .forEach