Javascript 当值相同时,If语句重复

Javascript 当值相同时,If语句重复,javascript,jquery,Javascript,Jquery,我有以下Javascript/jQuery代码: for (i = 0; i < 100; i++) { if(!(html == $("#chat-box").html())) { $("#chat-box").html(html); console.log("a"); } } (i=0;i

我有以下Javascript/jQuery代码:

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

if(!(html=$(“#聊天盒”).html())
{           
$(“#聊天室”).html(html);
控制台日志(“a”);
}
}
我对for循环进行了100次迭代。您可能会认为,至少在第一次之后,它将停止迭代,除非两个值中的一个发生更改(它们没有更改),但它不会。我不知道为什么。我尝试使用
if(htm1!=…)
,但没有成功。

我相信使用text()方法进行比较将解决以下问题:

 if(!(html == $("#chat-box").text()))
{           
    $("#chat-box").html(html);
}   

原因是jQuery处理文本是为了防止html()中出现特殊字符的问题,其中与text()一样,它返回原始值。如果仍然不起作用,console.log()将同时输出方法返回值和比较变量,以便更好地可视化。

您的变量
html
从未被初始化或赋值。它的价值是什么?仅使用您提供的代码,其值为
未定义
。因此,当您尝试这样做时:

$("#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");
    }
}
var html='stuffff';
对于(i=0;i<5;i++){
if(html!=$(“#聊天盒”).html(){
$(“#聊天室”).html(html);
控制台日志(“a”);
}
}

另外,您应该使用
==而不是
=

这里有趣的事情是循环是如何编写的。您能同时提供循环的代码吗?实际上,如果它们不同,循环应该更改一次,然后检查99次,什么也不做。@Pointy只是一个基本for循环。我不认为这太重要。就在那里。我还补充了我如何知道它一直在使用for循环(console.log)。@flowstonenknight!但这并没有发生!好吧,摆弄
innerHTML
和在某处赋值是两码事。根据“html”变量中的内容,返回值可能与原始输入不完全相同。返回值将是浏览器认为实际DOM外观的序列化版本。这不起作用。我将使用一个计数器来显示html一次,以便进行干净的比较。如果可以,发布比较,将帮助我们排除故障,这是我们应该能够快速解决的问题。我觉得很傻。html变量返回的结果是相同的,但它使用了
'
而不是
$(“#聊天框”).html()
,它在整个过程中使用
(即
)。有什么方法解决这个问题吗?@ChrisMP您可以在某处创建一个隐藏的
,设置它的
.html()
,然后将其取回。这将为您提供“浏览器标准”“字符串的版本。通过针对html实体的唯一属性而不是整个字符串,为比较变量添加更多特性。”。如果适用的话,我会在你最后的评论中使用vice来比较href属性的值。你是对的,但是OP没有包含原始字符串。是的,很抱歉,但是数据是敏感的。我使用console.log,我向您保证它完全相同。唯一的区别是使用
而不是
@ChrisMP您不能生成一些具有相同形式的随机垃圾数据,用于共享以便我们测试它吗?或者数据的形式也有点敏感?要求其他人调试代码而不给他们完整的代码是不好的形式。提出一个简单的测试用例,它可以复制问题,但不涉及敏感数据,并提供给我们。这样做,你甚至可以自己解决问题。