我正在尝试学习javascript,而不使用jQuery和其他人。
我有这个错误: 无法调用未定义的方法'getElementsByTagName'
我知道错误的问题,但它不知道解决它。 我怎么能在将来避免这个错误?
var menu = document.getElementsByClassName("menu-item");
var i;
for (i = 0; i < menu.length; i = i + 1) {
menu[i].addEventListener("mouseenter", function () {
setInterval(function(){
menu[i].getElementsByTagName("a").css("color","red")
},5000)
})
}
答案 0 :(得分:1)
实际上代码存在更深层次的问题。循环运行时,不会调用setInterval
的函数。它将在循环结束后调用。因此,当调用它时,i
将具有值menu.length
,因此位于数组之外。要修复它,请尝试以下方法:(小提琴:http://jsfiddle.net/bKY9y/5/)
var menu = document.getElementsByClassName("menu-item");
console.log(menu);
for (var i = 0; i<menu.length; i++)
{
console.log(menu[i].addEventListener)
menu[i].addEventListener("mouseover",function () {
var obj = this;
setTimeout(function(){
console.log(obj);
var a = obj.getElementsByTagName("a");
for (var j = 0; j < a.length; j++){
a[j].style.color = "red";
}
},1000)
})
}