javascript中for循环表格行数组的问题

binglimomo 2015-07-10 10:42:53
本人初学JS,还望大神指教。
写了一段程序,发现一个不太明白的问题。代码如下:

<!DOCTYPE html>
<html>
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript">

window.onload = function(){

var hang = document.getElementsByTagName("tr");

for(var i=0; i<hang.length; i++){
hang[i].onmouseover = function(){

this.style.backgroundColor = "red";
};
hang[i].onmouseout = function(){
this.style.backgroundColor = "#fff";
};
}


}

</script>
</head>
<body>
<table border="1" width="50%" id="table">
<tr>
<th>学号</th>
<th>姓名</th>
<th>操作</th>
</tr>

<tr>
<td>xh001</td>
<td>王小明</td>
<td><a href="#" >删除</a></td>
</tr>

<tr>
<td>xh002</td>
<td>刘小芳</td>
<td><a href="#" >删除</a></td>
</tr>

</table>
<input type="button" value="添加一行"/>
</body>
</html>


上述代码是正确的,实现鼠标移动到表格该行显示红色,移开显示白色。但是我把

hang[i].onmouseover = function(){

this.style.backgroundColor = "red";
};

段中的this改成hang[i]就不正确了。alert查看了一下,hang[i]是undefined,这是为什么?查看i值也是正确的。。。请懂的大神帮忙解释一下。谢谢啦~
...全文
220 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
红面狼 2015-07-10
  • 打赏
  • 举报
回复
其实 我就是来接个分
  • 打赏
  • 举报
回复
也就是你在函数里写hang[i] 等于是在函数外边写了 hang[i].hang[i] 大概是这个意思
  • 打赏
  • 举报
回复
hang[i].onmouseout = function(){ this.style.backgroundColor = "#fff"; }; hang[i]是你那个对象,然后你绑定了这个对象的onmouseout 函数,那么在你的function实现里this就代表是hang[i]这个对象。 这个对象里本身已经没有hang[i]这东西了,大概是这个意思,楼主自己体会一下
NANU-NANA 2015-07-10
  • 打赏
  • 举报
回复
引用 1 楼 lwb314 的回复:
hang[i].onmouseout = function(){ this.style.backgroundColor = "#fff"; }; hang[i]是你那个对象,然后你绑定了这个对象的onmouseout 函数,那么在你的function实现里this就代表是hang[i]这个对象。 这个对象里本身已经没有hang[i]这东西了,大概是这个意思,楼主自己体会一下
体会一下

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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