javascript - 如何使用具有相同 id 的多个 elememts 的 javascript?

标签 javascript html dom ambiguity

我需要使用 javascript 操作具有某些 id 的某些元素。我无法控制代码,因此不幸的是我无法使用唯一的 id 重写代码。例如:

<div id="abc">
     <p class="xyz">10</p>
</div>

<div id="abc">
   <p class="xyz">20</p>
</div>

p标签内的内容保证是唯一的。所以,我需要根据p标签内的内容进行一些操作。

但是如果我使用 DOM 按 id 选择,将选择哪个 div 以及如何确保选择所需的元素?

最佳答案

显然,拥有唯一的 ID 是最佳选择,但是,如果不可避免,您可以像这样使用它:

var abcs = document.querySelectorAll("#abc");

abcs[0].querySelector(".xyz").style.background = "green";

abcs[1].querySelector(".xyz").style.background = "red";
<div id="abc">
     <p class="xyz">10</p>
</div>

<div id="abc">
   <p class="xyz">20</p>
</div>

请注意使用 document.querySelectorAll() 而不是 document.getElementById()。这是因为 querySelectorAll 将抓取所有匹配的元素,而 getElementById() 将仅抓取第一个元素。

更具体地说明您的示例:

var abcs = document.querySelectorAll("#abc");


function setAbcByContent(contentValue, color) {
  abcs.forEach(function (elem) {
    if (elem.querySelector(".xyz").innerText === contentValue) {
      elem.style.background = color;
    }
  });
}

setAbcByContent("10", "green");
setAbcByContent("20", "red");
<div id="abc">
     <p class="xyz">10</p>
</div>

<div id="abc">
   <p class="xyz">20</p>
</div>

关于javascript - 如何使用具有相同 id 的多个 elememts 的 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161391/

相关文章:

javascript - 通过 JavaScript 将对象附加到 DOM 的背景音乐

javascript - Angular.js 如何重试图像直到可用

javascript - 如何在 javascript v8 生成器代码中调用给定 yield 的回调?

javascript - 检查 localStorage 中的值是否以字符串和 console.log() 值名称开头

html - 按钮和文本距离太远

php 动态 html 标题

html - 我的 child div 没有继承 100% 的高度

javascript - 什么是单例对象?

更改段落文本的 Javascript 事件监听器单击按钮不起作用?

javascript - 如何与 WebSharper 交互和设置 DOM 属性?