<!DOCTYPE html>
<html>
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html; charset=gbk"/>
<script type="text/javascript">
window.onload = function(){
// 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
var tabletr=document.getElementsByTagName("tr");
for(var i=0;i<tabletr.length;i++)
{
tabletr[i].onmouseover=function()
{
tabletr[i].style.backgroundColor="red";
}
tabletr[i].onmouseout=function()
{
tabletr[i].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="javascript:;" >删除</a></td>
</tr>
<tr>
<td>xh002</td>
<td>刘小芳</td>
<td><a href="javascript:;" >删除</a></td>
</tr>
</table>
<input type="button" value="添加一行" />
</body>
</html>以上为代码部分,但是在写这段代码的时候,无法得出预期结果,即鼠标经过的时候不触发事件。后来看到别人的代码,发现将tabletr[i].style.backgroundColor改为this.style.backgroundColor后就成功了。我想知道为什么在这里使用tabletr[i]不行而this则可以呢?还有这里的this代表的什么,难道不是代表的tabletr[i]吗?
2 回答
已采纳
Caballarii
TA贡献1123条经验 获得超629个赞
绑定的时候执行完js代码,i已经是个固定值了(这里应该是3),真正到触发mouseover的时候,执行到tabletr[i]这句话的时候实际上就是tabletr[3],而不是你想要的那个i的值。this指当前绑定的对象,所以可以拿到想要的tr
添加回答
举报
0/150
提交
取消