如何获取getElementsByClassName集合的索引值。
function clickSchedule(){
var t = document.getElementsByClassName("table")
for(i=0; i<=t.length; i++)
{
t[i].onclick= function() {
// get the index value of the node when clicked something like this
// alert(t[i].index)
// already tried alert(t[i]) returning undefined.
// already tried alert(t.item(i)) returning NULL.
};
}
}
window.onload = function(){
clickSchedule();
};
答案 0 :(得分:2)
第一个问题是你需要在循环中修复你对<=
的使用,这会导致你的循环迭代一次太多次(解释未定义的消息)。更改为<
而不是<=
:
for(i=0; i<t.length; i++)
看来你只想在click事件中获取元素的句柄。在这种情况下,this
上下文将引用单击的元素。
t[i].onclick= function() {
console.log( this );
}
如果你真的需要索引,那么你需要一个闭包,因为否则i
将始终是最后一次迭代,直到任何点击事件发生。
关闭示例:
for(i=0; i<t.length; i++){
(function(protectedIndex){
t[i].onclick= function() {
console.log( t[protectedIndex] );
}
})(i);
}
注意:document.querySelectorAll
的浏览器支持率高于document.getElementsByClassName
,因此您可以更改为:
var t = document.querySelectorAll(".table")