鼠标事件attachEvent引起的奇怪问题?急!高手赐教!

毛毛头 2013-04-26 09:18:07
本人最近做一个了一个效果,就是在页面中凡是有表格的当用鼠标移动到表格上的某一行时,这行就会变背景色,于是我做了如下效果:
function setTrBg(){
var tableNum=document.getElementsByTagName("table").length;
var oTable=document.getElementsByTagName("table");
for(i=0;i<tableNum;i++)
{
var trNum=oTable[i].getElementsByTagName("tr").length;
oTrs=oTable[i].getElementsByTagName("tr");
for(var ii=0;ii<trNum;ii++){
if(oTrs[ii].attachEvent()){
oTrs[ii].attachEvent("onmouseover",function(){this.style.background="#ddd"},false);
oTrs[ii].attachEvent("onmouseout",function(){this.style.background="#ddd"},false); }
else{
oTrs[ii].addEventListener("mouserover",function(){this.style.background="#ddd"});
oTrs[ii].addEventListener("mouserout",function(){this.style.background="#fff"});

}
}
}
window.onload=setTrBg;
上面代码运行后提示找不到this这个对象,而用下面的方法就正常

function setTrBg(){
var tableNum=document.getElementsByTagName("table").length;
var oTable=document.getElementsByTagName("table");
for(i=0;i<tableNum;i++)
{
var trNum=oTable[i].getElementsByTagName("tr").length;
oTrs=oTable[i].getElementsByTagName("tr");
for(var ii=0;ii<trNum;ii++){
oTrs[ii].onmouseover=function(){this.style.background='#ddd';};
oTrs[ii].onmouseout=function(){this.style.background='#fff';}
}
}
}

window.onload=setTrBg;

请高手赐教!!!!
...全文
61 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2013-04-26
  • 打赏
  • 举报
回复
这样绑定attach方法中的this为window,直接 dom.on事件名称 这样绑定不省事多了。。
似梦飞花 2013-04-26
  • 打赏
  • 举报
回复
貌似是不能的样子

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧