我有一些具有相同类名的元素。
如何获取我使用onclick
个事件点击的元素数量?
例如:
var x = document.getElementsByClassName("myclass").length;
for (a=0; a<=x; a++)
{
// here i want get number of clicked myclass
}
答案 0 :(得分:1)
您可以在indexOf
数组上使用document.getElementsByClassName("myclass")
。您可以使用Array.from
或[].slice.call
制作数组。
假设您的click
处理程序在下面的代码段中显示,并且“对e.target
执行某些操作”其中e.target
是已单击的元素,您可以像这样检查数组上的indexOf
e.target
:
document.addEventListener("click", function(e) {
if (e.target.classList.contains("myclass")) {
/*
The above part could as well look like
div1.onclick = function(e){…};
div2.onclick = function(e){…};
…
*/
console.log("Do something to %o", e.target);
console.log("Index of clicked element: %d", Array.from(document.getElementsByClassName("myclass")).indexOf(e.target));
}
});
&#13;
<div>
<div class="myclass">A0</div>
<div>B1</div>
<div class="myclass">A2</div>
</div>
<div>
<div>B3</div>
<div class="myclass">A4</div>
</div>
<div class="myclass">A5</div>
<div class="myclass">A6</div>
<div>B7</div>
<div class="myclass">A8</div>
&#13;
如果您希望元素的索引在同一个父元素中,您可以使用:
Array.from(e.target.parentNode.children).indexOf(e.target)
如果您想将上述内容限制为使用myclass
类的元素,您可以使用以下内容:
Array.from(e.target.parentNode.getElementsByClassName("myclass")).indexOf(e.target)
或直接儿童:
Array.from(e.target.parentNode.children).filter(function(elem){
return elem.classList.contains("myclass");
}).indexOf(e.target)
答案 1 :(得分:0)
您可以在onClick事件处理程序中捕获有关被点击元素的信息。
当点击事件发生时运行的任何函数将作为第一个参数传递一个事件。该事件对象有一个目标,该目标将是对单击的特定元素的引用。
function clickHandler(event) {
console.log(event.target);
}