我正在创建一个在更改值时调用以下方法的表,但是如果变量stuntSet设置为“all”,则更新方法会消失。
当我调用updateStunts时,如果stuntSet设置为“all”,它永远不会离开for循环。当它被设置为其他任何东西时它似乎工作正常并继续调用countStuntRefresh()。奇怪的是它完成了if语句中的所有代码,它检查stuntSet ===“all”但是它永远不会到达countStuntRefresh()的调用;
我已经经历了一个小时,我找不到我的错误。如果这是一个简单的错误我很抱歉,我感谢你能给予的任何帮助。
http://jsbin.com/nicoruvamula/1/ 是完整代码的链接
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;
}
};
答案 0 :(得分:0)
当我运行jsbin代码时,有几个例外,因为document.getElementById("select" + character.stunts[i].name)
返回null。
查看代码,我注意到你不等待DOM-ready事件。正如您已经包含jQuery,您是否尝试将代码包装在
中$(function() { /* your code*/ });
(或者jsbin会在onload或DOMReady中自动调用你的代码吗?不熟悉jsbin ...)