如何迭代具有相同ID的元素
How do I iterate over elements with the same ID?
我想以编程方式将相同的事件侦听器分配给具有相同ID的两个按钮。问题是,当我像下面这样复制可编辑内容div(由事件侦听器更新的DOM元素)时,只有第一个按钮起作用,而重复元素上的第二个按钮什么都不起作用。
参见小提琴:http://jsfiddle.net/xo0Lampn/
HTML
<!---Non-duplicate element--->
<div class="mainEdit">
<!---This one is working--->
<a id="editBtn" class="editbtn" href="#">Edit Text</a>
<!---This one is working--->
<div id="textEdit">Editable Content</div>
</div>
<!---Non-duplicate element--->
<!---Duplicate of above--->
<div class="mainEdit">
<!---This one is not working--->
<a id="editBtn" class="editbtn" href="#">Edit Text</a>
<!---This one is not working--->
<div id="textEdit">Editable Content</div>
</div>
<!---Duplicate of above--->
JavaScript
var edbtn = document.getElementById("editBtn");
var edtext = document.getElementById("textEdit");
// I've tried to loop them but this doesn't work.
// for (var i = 0; i < edbtn.length; i++) {
edbtn.addEventListener('click', function () {
if (edtext.contentEditable == "true") {
edtext.contentEditable = "false";
var v = edtext.clientWidth + 10;
edtext.style.width = v + "px";
edtext.style.textDecoration = "none";
edbtn.innerHTML = "Edit Text";
} else {
edtext.contentEditable = "true";
edtext.style.width = "auto";
edtext.style.textDecoration = "underline";
edbtn.innerHTML = "Done";
}
});
// }
我希望这两个按钮都能像第一个一样发挥作用,当我点击每个按钮时,它应该会使id="textEdit"的元素可编辑。
我可能做错了,但我希望你们能给出一个解决方案。
不要使用重复的ID。这不是有效的HTML。考虑使用class
,在这种情况下,您可以使用document.getElementsByClassName
找到元素。
var elements = document.getElementsByClassName('yourClassNameHere');
for (var i = 0, length = elements.length; i < length; i++) {
elements[i].onclick = function(event) {
var button = event.currentTarget;
// Do your contentEditable checks here
};
}
相关文章:
- Javascript:表单验证getElementById仅返回第一个id元素
- 如何为每个带有数字的id元素使用Javascript函数
- 使用regex选择ID元素
- Bootstrap Navbar在选择ID元素后未折叠
- JavaScript-更改一组包含特定文本和变量ID元素的链接
- 父页面中的 JQuery 未在部分视图中检测到 id 元素
- ID 元素在作为参数给出时返回
- 当 Javascript 中的 POST ID 元素插入 PDO 时,数据库中没有结果
- 为什么变量值不显示在 id 元素中
- 如何查找 id 元素的文本值
- 使用 ajax 将 id 元素传递给数据库
- 从另一个HTML文件中获取ID元素
- 正在克隆html标记id元素
- 如何在html中循环使用ID元素
- 获取动态生成的id元素的内部文本发送到谷歌分析
- 如何通过tagname检查ID元素
- jQuery滚动到底部的ID元素
- 检查Id元素javascript
- 在我显示一个id元素后,页面跳转到顶部
- 如何在HTML中突出显示当前的id元素