用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");
}
}
}
展开
 我来答
dingn1
2016-11-26 · TA获得超过218个赞
知道小有建树答主
回答量:468
采纳率:90%
帮助的人:111万
展开全部

这样循环来做事件是不行的,因为当事件执行的时候你是找不到对应的元素的。你需要的是在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 函数里面的东西是在你触发的时候才计算的)。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式