如果声明在值相同时重复

时间:2014-09-04 00:37:15

标签: javascript jquery

我有这个Javascript / jQuery代码:

for (i = 0; i < 100; i++) { 
    if(!(html == $("#chat-box").html()))
    {           
        $("#chat-box").html(html);
        console.log("a");
    }
}

我在for循环上进行了100次迭代。您会认为至少在第一次之后它会停止迭代,除非其中一个值发生变化(它们没有变化),但事实并非如此。我不知道为什么。我尝试使用if(htm1 != ...)但是没有用。

2 个答案:

答案 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");
    }
}

此外,您应该使用!==代替!=