风到这里就是粘
2017-07-27 11:12
var tbody=document.getElementById("table").lastChild; tbody显示未定义,求助
根据浏览器的解释的顺序, 当它读到getElementById("table")的时候,还不知道有table这个东西.
所以你把script代码段放到table以后, getElementById.....这行随意放函数外面还是里面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>制作一个表格,显示班级的学生信息</title>
<script type="text/javascript">
window.onload = function(){
//鼠标移动改变背景,鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff
//提示:1.获取表格的行,getElementsByTagName 。2.使用for进行循环,为每行添加事件及背景颜色设置。
var trs=document.getElementsByTagName("tr");
for (var i = 0; i < trs.length; i++) {
trs[i].onmouseover=function(){
this.style.backgroundColor="pink";
};
trs[i].onmouseout=function(){
this.style.backgroundColor="#fff";
};
}
}
// 编写一个函数,供添加按钮调用,动态在表格的最后一行添加一行;
// 使用createElement()、innerHTML、appendChild()
function addtr(){
var stuNo=prompt("请输入学号:","");
var name=prompt("请输入姓名:","");
var newtr=document.createElement("tr");
newtr.innerHTML='<td>'+stuNo+'</td>'+'<td>'+name+'</td>'+'<td>'+'<a href="javascript:deleteRow();" >删除</a>'+'</td>'; //innerHTML可以解析HTML标签
var tbody=document.getElementById("table").lastChild;//浏览器在table标签下默认添加tbody节点,为什么放到addtr()外面不好使?
tbody.appendChild(newtr);
}
// 使用removeChild()创建删除函数,删除当前行
function deleteRow(){
var tbody=document.getElementById("table").lastChild;
tbody.removeChild(this.parentNode.parentNode);
}
</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();" >删除</a></td><!--在删除按钮上添加点击事件 -->
</tr>
<tr>
<td>xh002</td>
<td>刘小芳</td>
<td><a href="javascript:deleteRow();" >删除</a></td><!--在删除按钮上添加点击事件 -->
</tr>
</table>
<input type="button" value="添加一行" onclick="addtr()" /><!--在添加按钮上添加点击事件 -->
</body>
</html>
麻烦把完整代码贴出来
把var tbody=document.getElementById("table").lastChild; 放在了addtr()里了好使了,这是为什么?
JavaScript进阶篇
469065 学习 · 22582 问题
相似问题