javascript - 如何通过 JS 使用唯一子数据按类更新多个元素?

标签 javascript html css eventsource

简而言之,我从外部服务器接收到一串 5-10 个事件,如下所示:

event: add
data: { "hostname":"name", "properties": {"info": "50"}}

event: add
data: { "hostname":"name2", "properties": {"info": "45"}}

event: add
data: { "hostname":"name3", "properties": {"info": "67"}}

等等等等

我正在像这样通过 EventSource JS 处理它们:

var source = new EventSource("http://XXX.XXX.XXX.XXX:PORT/")
source.addEventListener('add', onAdd)

function onAdd(e) {
  var data = parse(e)

  var output = document.getElementById('append');
  var ele = document.createElement("div");
  var frag = document.createDocumentFragment();
  frag.appendChild(ele);
  ele.setAttribute("class", 'row sub-item');
  ele.innerHTML ="<ul>"
                +"<li>" + "<span id=name>" + data.hostname + "</span>" + "</li>"
                +"<li>" + "INFO: " + "<span id=info>" + data.properties.info + "</span>" + "</li>"
                +"</ul>"
                +"</div>"
  output.appendChild(frag);
}

此代码成功地将每个 div 和其中的无序列表添加到页面上。

我的问题是我还有另一组 future 事件,例如:

event: update
data: { "hostname":"name", "properties": {"info": "65"}}

event: update
data: { "hostname":"name2", "properties": {"info": "35"}}

event: update
data: { "hostname":"name3", "properties": {"info": "15"}}

等..

这些来自服务器并经常发送新的 info 属性。我找不到使用跨度类 ( <span class="info" ) 更新所有唯一 info 属性的方法,因为如果我按 class 它用相同的数字(name1 45 name2 45 name3 45)更新页面上的每个信息属性,我不能使用id(<span id="info")因为那时它只会更新第一个,因为 id 只应该在您的页面上使用一次。

我知道必须有一个我忽略的简单解决方案。谢谢!

最佳答案

您可以通过向每个跨度添加 data-id 属性来使用数据集,然后仅更新匹配项。

您还可以将您的 ID 更改为 info_45 等,并获取每个跨度的 ID,并使用正则表达式获取 ID cleanID = idFromSpan.match(/\d+/g)[0];

关于javascript - 如何通过 JS 使用唯一子数据按类更新多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35839770/

相关文章:

javascript - Rangy:创造新亮点就是记住旧亮点

javascript - 滚动脚本上的动画更改 Logo 大小会导致库冲突或其他一些加载问题

javascript - 尝试在 html5 中创建五彩纸屑效果,如何为每个元素获得不同的填充颜色?

javascript - 弹出的 prettyPhoto 最大宽度和高度太大

html - 如何在 HTML 中重复一个字符?

javascript - 动态更改所有 <img> 标签的样式

javascript - 将同一个事件监听器分配给多个按钮

javascript - jQuery 按钮单击一次执行此操作,单击两次重新启动

javascript - 禁用表单不提交其字段

javascript - Angular JS中fa fa-angle-left pull-right中的数据小部件树问题