数组:无限循环

时间:2015-03-19 20:27:07

标签: javascript jquery arrays

我使用javascript&动态添加/删除元素jQuery的。出于某种原因,我的内部for循环没有退出。计数器继续爬过数组长度,并继续添加元素,直到浏览器崩溃。在Firefox中调试时,调试器groupList[i].length会显示正确的值。

内部循环永远不会返回false的任何想法?

var $j = jQuery.noConflict();

// array of arrays
var groupList = [];
groupList[groupList.length] = ["Japan", "Honda", "Toyota", "Nissan"];
groupList[groupList.length] = ["America", "Ford", "Dodge", "Chevrolet"];

// loop that creates a radio button from the first element in each array
for (var i = 0; i < groupList.length; ++i) {
    $j("#groupBtns").append("<label class=\"btn btn-primary active\" id=\"btn" + 
        groupList[i][0] + "\"><input type=\"radio\">" + groupList[i][0] + "</label>");
}

// function to add second group of radio button for remaining elements in selected array
function groupClick(group) {
    for (var i = 0; i < groupList.length; ++i) {
        if (group == groupList[i][0]) {
            // -- this is the infinite loop -- //
            for (var o = 1; 0 < groupList[i].length; ++o) {
                $j("#subGroupBtns").append("<label id=\"btn" + groupList[i][o] + 
                    "\" class=\"btn btn-primary\"><input type=\"radio\">" + 
                    groupList[i][o] + "</label>");
            }
        }
    }
}

// event listener
$j("#groupBtns").on('click', function (e) {
    groupClick($j(e.target).text())
});

注意:数组的长度并不总是相同,所以我不能在循环中使用静态终止符。

1 个答案:

答案 0 :(得分:4)

你有一个错字:

for (var o = 1; 0 < groupList[i].length; ++o) {

您正在执行0 < groupList[i].length,如果有长度,则始终为真。

应该是:

for (var o = 1; o < groupList[i].length; ++o) {