使用Javascript替换所有具有相同ID的innerHTML

时间:2014-03-13 14:13:17

标签: javascript innerhtml

我该怎么做?如果可以,请帮忙,

  <div id="user"> one </div>
  <div id="user"> two </div>
    <script>
document.getElementById('user').innerHTML = "three";
  </script>

我在想我们是否可以用“三个”

替换所有具有相同ID的div

4 个答案:

答案 0 :(得分:2)

多个元素上的相同ID并不是一个好主意,因为在html文档中声明了id的独特性。更好的是使用类。

然后在vanilla JS中你可以做到以下几点:

var users = document.getElementsByClassName('user');
for (var i = 0; i < users.length; ++i) {
    var user = users[i];  
    user.innerHTML = '<p>Hello out there!</p>';
}

或使用jQuery更容易。

答案 1 :(得分:1)

虽然在HTML中使用相同的ID非常气馁且无效,但在大多数浏览器中都有这样的方法:

var elements = document.querySelectorAll('[id="user"]');

for(var i = 0; i < elements.length; i++) {
    elements[i].innerHTML = "three";
}

答案 2 :(得分:0)

按照w3c标准,您必须使用唯一的ID。

http://www.w3.org/TR/html401/struct/global.html

请参见注释7.5.2元素标识符:id和类属性

您可以使用班级名称。

答案 3 :(得分:0)

正如其他人所说,多个ID不适合HTML。相反,您可以使用类:

  <div class="user"> one </div>
  <div class="user"> two </div>

然后您可以使用以下命令选择它们:

document.querySelectorAll('.user').forEach(el => {
 // do things with each element here
});

document.querySelectorAll('.user').forEach(el=>{
    el.style.background = "green";
})
<div class="user"> one </div>
<div class="user"> two </div>