在NodeLIst中检测被点击元素的索引
JavaScript - Detect index of Element being clicked in NodeLIst
我通过获取具有共享className的HTML元素创建了一个NodeList:
> var btn = document.getElementsbyClassName("btn")
这是HTML代码:
<div id="main">
<div class="btn">
</div>
<div class="btn">
</div>
<div class="btn">
</div>
<div class="btn">
</div>
</div>
因此这个特定的NodeList对象的长度为4。
现在我想在单击其中一个元素时调用一个函数。我通过使用for循环来完成:
for(var i = 0; i < btn.length ; i++) {
btn[i].onclick = doSomething;
};
function doSomething() {
// here come some code.
};
但是我如何获得触发事件的NodeList的索引?如何为数组中的每个元素赋唯一的名称?
我会这样做:
var btn = document.getElementById('main').getElementsByTagName('div');
for(var i = 0; i < btn.length ; i++) {
btn[i].id = "btn"+i;
if(btn[i].className=="btn")
btn[i].onclick = doSomething;
};
function doSomething() {
var num = this.id.substr(3);
alert("Div " + num + " clicked");
};
(我拿出getElementsByClassName()使其跨浏览器。当然,这是假设你没有实现你自己的方法的覆盖,使其跨浏览器)。
编辑:对于您的innerHTML问题,请查看附件中的小提琴,看看它是否正常工作:http://jsfiddle.net/TdCD8/
可以将其包含在函数签名中:
for(var i = 0; i < btn.length ; i++) {
btn[i].onclick = doSomething(i);
};
function doSomething(i) {
return function() {
btn[1].innerHTML = i;
}
};
相关文章:
- 如何索引jquery中的每个元素
- JavaScript DOM:在容器中查找元素索引
- 通过javascript中的元素索引访问eventListener中的元素
- 将页面元素索引到 JSON 对象?或者jQuery选择器它每次
- jQuery将相同的类添加到两个不同容器中的同一元素索引中
- 获取小元素索引直到数组长度
- jQuery获取元素索引,尽管包装器/父元素
- 更改数组中某些元素(索引)的顺序
- 访问具有公共类名的元素数组中的元素索引
- 访问循环的内部的ES6数组元素索引
- 列表类元素(索引).渐变(某些速度)不起作用
- javascript中的表单元素索引,用于jquery.change函数
- 获取文本块中的元素索引
- 用主干JS .get模型事件连接元素索引
- 从81个元素索引的数组中获取行和列值
- 如何使用javascript获得元素索引
- 使用类和子类获取元素索引
- Mootools从父元素获取子元素索引
- 如何在Javascript中获得一组固定元素的元素索引
- 使用jQuery更改列表元素索引