Javascript 停止for循环的If语句
我正在制作一个表,当值更改时调用以下方法,但是如果变量stuntSet设置为“all”,则update方法将部分终止 当我调用updateStats时,如果stuntSet设置为“all”,它将永远不会退出for循环。当设置为其他值时,它似乎工作正常,并继续调用countStuntRefresh()。奇怪的是,它完成了if语句中检查stuntSet==“all”的所有代码,但它从未到达countStuntRefresh()的调用 我已经经历了一个小时,我找不到我的错误。如果这是一个简单的错误,我向你道歉,我感谢你所能给予的一切帮助 是指向完整代码的链接Javascript 停止for循环的If语句,javascript,jquery,loops,Javascript,Jquery,Loops,我正在制作一个表,当值更改时调用以下方法,但是如果变量stuntSet设置为“all”,则update方法将部分终止 当我调用updateStats时,如果stuntSet设置为“all”,它将永远不会退出for循环。当设置为其他值时,它似乎工作正常,并继续调用countStuntRefresh()。奇怪的是,它完成了if语句中检查stuntSet==“all”的所有代码,但它从未到达countStuntRefresh()的调用 我已经经历了一个小时,我找不到我的错误。如果这是一个简单的错误,我
var selected = false;
var updateStunts = function() {
for (var i = 0; i < character.stunts.length; i++) {
if (stuntSet === "all") {
selected = document.getElementById("select" + character.stunts[i].name).checked;
character.stunts[i].chosen = selected;
} else if( stuntSet === character.stunts[i].category) {
selected = document.getElementById("select" + character.stunts[i].name).checked;
character.stunts[i].chosen = selected;
}
}
countStuntRefresh();
};
var countStuntRefresh = function() {
character.spentRefresh = 0;
for(var i = 0; i <character.stunts.length; i++){
if (character.stunts[i].chosen) {
character.spentRefresh += character.stunts[i].cost;
}
document.getElementById("stunttest").innerHTML = "Spent Refresh:" + character.spentRefresh;
}
};
var selected=false;
var updateStunts=function(){
for(var i=0;i 对于(var i=0;i当我运行jsbin代码时,会出现一些异常,因为document.getElementById(“select”+character.stunts[i].name)
返回null
查看代码时,我注意到您没有等待DOM就绪事件
$(function() { /* your code*/ });
(或者jsbin会自动在onload或DOMReady中调用您的代码吗?不熟悉jsbin…如果它们都做相同的事情,if语句的意义是什么?^更准确地说,这是等效的:if(stuntSet==“all”| stuntSet==character.stunts[i].category)
。我可能应该在两者之间使用| |。有许多不同的类别,它是为了限制哪些character.stunts选择的属性受到影响。另外,请参阅我对Tim答案的评论。您应该向Stunt对象添加一个额外的变量,如this.safeid=name.replace(//g,“-”);
并使用safeid作为各种选择的ID。返回null(或者更确切地说是未定义)的原因在于ID:
。ID可能是一个“单词”,比如选择我的眼角
。我将尝试ID。我不明白的是,当我将特技放在“警觉”上时,“我的眼角”工作完美。当特技设置为All时,它会停止工作。我不明白为什么一个可以工作,另一个不行。Paul成功了!不是空格造成了问题,但一些id有一个撇号,因此关闭了它们。这就是为什么它对有空格的组有效,但无法浏览整个列表。我使用了r替换线条以删除撇号,效果非常好。我希望在您的评论旁边有一个复选标记。谢谢大家。