这是一段慕课上前端教程的编程练习的同学代码,代码目的是做一个表格,可以点添加添加表格,点删除删除那一行,然后移动鼠标对应行会变色
看了这段代码,我有了几个问题,1,window.onload必须家吗,2,在添加列表的函数处。
tr.appendChild(td2);
tr.appendChild(td3);
var addrow = document.getElementById("table").lastChild;
var obj=addrow.appendChild(tr);
为什么要加入到table的最后的子元素处?他最后的子元素是什么。
<!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 tr = document.getElementsByTagName("tr");
for(var i = 0 ;i<tr.length;i++){
bgcChange(tr[i]);
}
}
function bgcChange(tr1)
{
tr1.onmouseover=function(){
tr1.style.backgroundColor="#f2f2f2";
}
tr1.onmouseout= function () {
tr1.style.backgroundColor="#fff";
}
}
// 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
function addROW(){
var xh=prompt("输入学号");
var xm=prompt("输入姓名");
if(xh!=null&&xh!=""&&xm!=null&&xm!="")
{
var tr = document.createElement("tr");
var td1 = document.createElement("td");
var td2 = document.createElement("td");
var td3 = document.createElement("td");
td1.innerHTML=xh;
td2.innerHTML=xm;
td3.innerHTML="<a href='javascript:deleteROW(this);' >删除</a>";
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
var addrow = document.getElementById("table").lastChild;
var obj=addrow.appendChild(tr);
//新添加的tr也能执行此函数
bgcChange(obj);
}
else alert("姓名学号不可以为空!");
}
// 创建删除函数
function deleteROW(obj){
var tb=obj.parentNode.parentNode.parentNode;
var tr=obj.parentNode.parentNode;
tb.removeChild(tr);
}
</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:deleteROW(this);" >删除</a></td> <!--在删除按钮上添加点击事件 -->
</tr>
<tr>
<td>xh002</td>
<td>刘小芳</td>
<td><a href="javascript:deleteROW(this);" >删除</a></td> <!--在删除按钮上添加点击事件 -->
</tr>
</table>
<input type="button" value="添加一行" onclick="addROW()" /> <!--在添加按钮上添加点击事件 -->
</body>
</html>
無訴離殤