我有这个Javascript / jQuery代码:
for (i = 0; i < 100; i++) {
if(!(html == $("#chat-box").html()))
{
$("#chat-box").html(html);
console.log("a");
}
}
我在for循环上进行了100次迭代。您会认为至少在第一次之后它会停止迭代,除非其中一个值发生变化(它们没有变化),但事实并非如此。我不知道为什么。我尝试使用if(htm1 != ...)
但是没有用。
答案 0 :(得分:1)
我相信使用text()方法进行比较会解决问题:
if(!(html == $("#chat-box").text()))
{
$("#chat-box").html(html);
}
原因是jQuery处理文本以防止使用html()处理特殊字符的问题,而text()则返回原始值。如果它仍然不起作用,则console.log()将两个方法返回值和比较变量都更好地可视化。
答案 1 :(得分:0)
您的变量html
永远不会被初始化或分配给。它的价值是什么?仅使用您提供的代码,其值为undefined
。所以当你尝试这样做时:
$("#chat-box").html(html);
这是怎么回事:
$("#chat-box").html(undefined);
哪个没效果。但是,如果您首先初始化html
,则可以正常工作:
var html = 'stufffff';
for (i = 0; i < 5; i++) {
if(html !== $("#chat-box").html()) {
$("#chat-box").html(html);
console.log("a");
}
}
此外,您应该使用!==
代替!=
。