Chrome崩溃.html()/。append()

时间:2014-08-26 01:09:26

标签: javascript jquery html google-chrome

当我尝试用$('#myDiv').html(s)替换元素的html时,Chrome会崩溃。它适用于Firefox。 Chrome会尝试加载("等待localhost"或者#34;等待扩展AdBlock"或永远加载jQuery ...),直到它说网页崩溃为止。为什么会发生这种情况?如何解决?

此外,如果我不在功能中更改HTML,而是使用控制台,它可以正常工作!

function genTables(rows, numItems) {
    var cols = parseInt(numItems / rows) + 1;
    s = '<table><tbody>';
    for (i = 0; i < cols; i++) {
        for (j = 0; j < rows; j++) {
            s += '<tr><td>foo</td></tr>';
        }
        if ((i + 1) != cols) {
            s += '</tbody></table><table><tbody>';
        }
    };
    s += '</tbody></table><div class="clear"></div>';
    $('#myTables').html(s);
    // This crashes Chrome as well 
    //$('#myTables').append($.parseHTML(s));
}

1 个答案:

答案 0 :(得分:0)

我明白了,并且看了一眼。

稍后在我的函数中我有一个while循环:

while (newDiff > 0) {
    $('#myTables table.hasPad').each(function() {
        if (newDiff > 0) {
            $(this).find('tr td:first-child').each(function() {
                var currPad = parseInt($(this).css('padding-left').slice(0, -2));
                $(this).css({'padding-left' : currPad + 1 + 'px'});
                console.log(currPad + ' -> ' + (currPad + 1));
            });
            newDiff -= 1;
        }
    }
}

此循环将永远运行,因为没有

$('#myTables table.hasPad')

元素存在。切换我的函数的第9行

s += '</tbody></table><table class="hasPad"><tbody>';

这一切都有效。然而,这让我想知道,为什么它在Firefox中有用?