yikx
2019-01-31 19:45
<!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 a=document.getElementsByTagName("tr");
for(var i=0;i<a.length;i++){
a[i].onmouseover=function(){a[i].style.backgroundColor="#f2f2f2";}
a[i].onmouseout=function(){
a[i].style.backgroundColor="#fff";}
}
}
// 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
function add(){
var element=document.body.table;
var ele1=document.createElement("tr");
var ele2=document.createElement("td");
var ele3=document.createElement("td");
var ele4=document.createElement("td");
ele2.innerHTML="添加行";
element.appendChild(ele1);
ele1.appendChild(ele2);
ele1.appendChild(ele3);
ele1.appendChild(ele4);
}
// 创建删除函数
function remove1(){
removeChild(document.body.table.childNode[1]);
}
function remove2(){
removeChild(document.body.table.childNode[2]);
} </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:remove1();" >删除</a></td> <!--在删除按钮上添加点击事件 --> </tr> <tr> <td>xh002</td> <td>刘小芳</td> <td><a href="javascript:remove2();" >删除</a></td> <!--在删除按钮上添加点击事件 --> </tr> </table> <input type="button" value="添加一行" onclick="add()" /> <!--在添加按钮上添加点击事件 --> </body></html>
用a[i]的话,你期望的是,你给每个标签的事件里添加的function里找的a[i]是这个标签本身。
实际上是错误的,他会先去看看i是几,然后再找a[i]是哪个标签,然而i是一直在变化的变量而不是常量。在for循环结束后,i的值将会等于数组的长度即a.length。此时,每个标签当鼠标移上去后,他会执行你之前循环添加的function,去找a[i]是哪个,然后改变它的背景颜色。他找到a[a.length]发现这个标签并不存在(数组下标最大值为a.length-1),所以【a[i].style.backgroundColor="#f2f2f2"】这句话就无效了。
...
JavaScript进阶篇
469198 学习 · 22584 问题
相似问题