如果语句停止for循环

时间:2014-10-14 22:32:21

标签: javascript jquery loops

我正在创建一个在更改值时调用以下方法的表,但是如果变量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;
    }
};

1 个答案:

答案 0 :(得分:0)

当我运行jsbin代码时,有几个例外,因为document.getElementById("select" + character.stunts[i].name)返回null。

查看代码,我注意到你不等待DOM-ready事件。正如您已经包含jQuery,您是否尝试将代码包装在

$(function() { /* your code*/ });

(或者jsbin会在onload或DOMReady中自动调用你的代码吗?不熟悉jsbin ...)