用js得到td数组,并为每个td添加onmouseover事件,这样写为什么不行啊,求解答,谢谢
functionchange(){vartd=document.getElementsByTagName("td");for(vari=0;i<td.length;i++...
function change(){
var td=document.getElementsByTagName("td");
for(var i=0;i<td.length;i++){
td[i].onmouseover=function(){
td[i].style.backgroundColor="red";
}
td[i].onmouseout=function(){
td[i].removeAttribute("style");
}
}
} 展开
var td=document.getElementsByTagName("td");
for(var i=0;i<td.length;i++){
td[i].onmouseover=function(){
td[i].style.backgroundColor="red";
}
td[i].onmouseout=function(){
td[i].removeAttribute("style");
}
}
} 展开
1个回答
展开全部
这样循环来做事件是不行的,因为当事件执行的时候你是找不到对应的元素的。你需要的是在callback函数里面用event对象(也就是触发事件的那个对象)
function change(){
var td=document.getElementsByTagName("td");
for(var i=0;i<td.length;i++){
td[i].onmouseover=function(event){
event.target.style.backgroundColor="red";
}
td[i].onmouseout=function(event){
event.target.removeAttribute("style");
}
}
}
然后event.target来做对应的处理。这样才能是对应的。因为你的calback函数里面写的td[i]在你出发这个函数的时候是不存在的(callback 函数里面的东西是在你触发的时候才计算的)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询