Javascript 当值相同时,If语句重复
我有以下Javascript/jQuery代码: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
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您不能生成一些具有相同形式的随机垃圾数据,用于共享以便我们测试它吗?或者数据的形式也有点敏感?要求其他人调试代码而不给他们完整的代码是不好的形式。提出一个简单的测试用例,它可以复制问题,但不涉及敏感数据,并提供给我们。这样做,你甚至可以自己解决问题。