javascript - 检测与另一个元素具有相同属性值的元素

标签 javascript dom attributes

我有一些使用 XMLHttpRequest 从 XML 文件加载的内容:

<div uid="29710" >
content....
</div>
<div uid="19291" >
content....
</div>
<div uid="099181" >
content....
</div>

获取内容的代码:

xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","notes.xml",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML; 

var x = xmlDoc.getElementsByTagName("noteboard");
var newHTML = "";
for (i=0;i<x.length;i++) { 
   newHTML += "<div><div uid='"+ x[i].getAttribute('uid')+"'>"
            + x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue
            + "<br>"+ x[i].getElementsByTagName("message")[0].childNodes[0].nodeValue
           +"</div></div>";
}
document.querySelector('#panel').innerHTML += newHTML;

内容每 3 秒更新一次,但当旧内容和新内容重复堆积时,问题就开始了。此外,UID 属性值是从与内容相同的 XML 文件中加载的 - 因此所有新的重复内容都与旧的重复内容具有相同的 UID。

如果我不够清楚,这就是正在发生的事情:

<div uid="19291">Old Content</div>
<div uid="77191">New Content</div>
<div uid="19291">Old Content</div>
<div uid="19291">Old Content</div>
<div uid="21503">New Content</div>

那么如何删除所有具有相同 UID 值的 div,除了原始的 div?

最佳答案

您可以在添加之前检查您要添加的uid是否已经存在于页面中。

xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","notes.xml",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML; 

var x = xmlDoc.getElementsByTagName("noteboard");
var newHTML = "";
for (i=0;i<x.length;i++) { 

  // check if the UID exists in the page and only add it if it does not
  var uid = x[i].getAttribute('uid');
  if ( !document.querySelector('#panel *[uid="'+ uid +'"]') ){

    newHTML += "<div><div uid='"+ x[i].getAttribute('uid')+"'>"
            + x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue
            + "<br>"+ x[i].getElementsByTagName("message")[0].childNodes[0].nodeValue
            + "</div></div>";
  }
}

document.querySelector('#panel').innerHTML += newHTML;

关于javascript - 检测与另一个元素具有相同属性值的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32661830/

相关文章:

javascript - "push"不是函数 [在 getElementsByTagName 返回的元素上]

javascript - 右键弹出菜单慢

.net - 如何为装配创建自定义属性?

javascript - 使用 Angularjs 在 URL 中存储 View 状态

javascript - PhantomJS 无法在 JavaScript 页面上运行,错误 "Activate JavaScript"

javascript - 单击与 Javascript 具有相同类名的类按钮

asp.net-mvc-3 - 在 MVC 3 View 模型上使用可编辑属性

Python AttributeError 对象属性是只读的

javascript - 在 `mocha --watch` 重新运行之前清除标准输出

javascript - 具有滚动效果的固定背景?