为了账号安全,请及时绑定邮箱和手机立即绑定

var tbody=document.getElementById("table").lastChild; tbody显示未定义,求助

var tbody=document.getElementById("table").lastChild;  tbody显示未定义,求助http://img1.sycdn.imooc.com//597958f30001d61708160203.jpg

正在回答

4 回答

根据浏览器的解释的顺序, 当它读到getElementById("table")的时候,还不知道有table这个东西. 

所以你把script代码段放到table以后, getElementById.....这行随意放函数外面还是里面

1 回复 有任何疑惑可以回复我~
#1

风到这里就是粘 提问者

非常感谢!但是我还想问一下,放在addtr()里面是为什么可以?是因为点击按钮时,又把函数解释了一遍才拿到那个table吗?
2017-07-28 回复 有任何疑惑可以回复我~
#2

X4tar 回复 风到这里就是粘 提问者

是的,点击事件会回调函数addtr(), 函数中的tbody是个只属于函数的局部变量,每次调用完函数后都会被释放掉.也是遵守先声明后调用的顺序.如果把var tbody = ......这句放在tbody......后面就会报错
2017-07-28 回复 有任何疑惑可以回复我~
#3

风到这里就是粘 提问者 回复 X4tar

明白了,非常感谢!
2017-07-29 回复 有任何疑惑可以回复我~
<!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>


0 回复 有任何疑惑可以回复我~

麻烦把完整代码贴出来

0 回复 有任何疑惑可以回复我~

把var tbody=document.getElementById("table").lastChild; 放在了addtr()里了好使了,这是为什么?


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

var tbody=document.getElementById("table").lastChild; tbody显示未定义,求助

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信