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

Javascript进阶篇的第9章22节的编程练习

Javascript进阶篇的第9章22节的编程练习

小三是篮球 2016-07-10 11:36:31
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>9章-22编程练习</title> <style type="text/css"> #div1{ width:50%; float:left; } #div2{ float:left; margin-left:5px; } th,td{ width:200px; text-align:center; } </style>   <script type="text/javascript">         window.onload = function(){   changecolor();  }   function changecolor(){  var tbody=document.getElementById("table").lastChild;<!--这里的tbody,不论你写上或是不写,默认都是存在的-->  var node=tbody.getElementsByTagName("tr");  for(var i=1;i<node.length;i++){  node[i].onmouseover=function(){  this.style.backgroundColor="#ccc";  }  node[i].onmouseout=function(){  this.style.backgroundColor="#fff";  }  }  }      // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。                      function add(){   var tbody=document.getElementById("table").lastChild;  var nextline=document.createElement("tr");  var td1=document.createElement("td");  var td2=document.createElement("td");  var td3=document.createElement("td");  var num=tbody.getElementsByTagName('tr');  if(num.length<=9)  {  td1.innerHTML="xh00"+num.length;  } else if(9<num.length<100)  {  td1.innerHTML="xh0"+num.length;  } else if(num.length>=100)  {  td1.innerHTML="xh"+num.length;  }  td2.innerHTML="<input type='text' name='名字' style='font-size:15px;width:200px;text-align:center'>";  td3.innerHTML="<a href='javascript:void(0);' onclick='remove(this)' >删除</a>" ;  nextline.appendChild(td1);  nextline.appendChild(td2);  nextline.appendChild(td3);  tbody.appendChild(nextline);  changecolor();  }       // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;            function remove(obj){  var tbody=document.getElementById("table").lastChild;  var del=obj.parentNode.parentNode;  tbody.removeChild(del);  var num=tbody.getElementsByTagName("tr");  for(var i=1;i<num.length;i++){  if(i<=9)  { num[i].firstChild.innerHTML="xh00"+i;   }  else if(10<i<100)  {  num[i].firstChild.innerHTML="xh0"+i;   }  }  }           // 创建删除函数         </script>   </head>   <body>  <div id="div1">    <table border="1" width="100%" id="table">    <tr> <th>学号</th> <th>姓名</th> <th>操作</th>    </tr>      <tr> <td>xh001</td> <td>王小明</td> <td><a href="javascript:void(0);" onclick="remove(this)" >删除</a></td>   <!--在删除按钮上添加点击事件  -->    </tr>    <tr> <td>xh002</td> <td>刘小芳</td> <td><a href="javascript:void(0);" onclick="remove(this)" >删除</a></td>   <!--在删除按钮上添加点击事件  -->    </tr>      </table> </div> <div id="div2">       <input  type="button" value="添加一行" onclick="add()"  />   <!--在添加按钮上添加点击事件  --> </div>     </body> </html>我在用firefox和chrome测试的时候,删除一行删不了,点删除,只把删除二字去掉了,当前行没有跟着全删掉,而我在IE8里测试的时候这个功能可以实现,不知道代码哪个地方出了兼容性错误?请好心的大神帮忙看看问题出在哪,感激不尽~!
查看完整描述

1 回答

?
柠檬酸钠

TA贡献331条经验 获得超534个赞

那啥,除IE浏览器外,两个元素之间如果有回车空格一类的话会有一个#text空文本节点,楼主可以打印一下tbody就知道了。
解决办法也很简单,把tbody删掉,直接写del.parentNode.removeChild(del)

查看完整回答
1 反对 回复 2016-07-10
  • 小三是篮球
    小三是篮球
    还是有点没理解,因为添加函数add(),在IE,Chrome和firefox里都可以添加一行,那里面的 var tbody=document.getElementById("table").lastChild;这一行代码应该是起作用的吧,我现在是不是应该改一下remove(obj)函数,我没改对,chrome调试的时候还是没解决问题,能麻烦指导下改的细节呗。
  • 柠檬酸钠
    柠檬酸钠
    我在chrome中打开没有问题啊
  • 小三是篮球
    小三是篮球
    我还是没改对,你能给我看看remove()函数里具体应该是什么样子的么。 我的是这样改的: function remove(obj){ var del=obj.parentNode.parentNode; var tbody=del.parentNode; tbody.removeChild(del); var num= tbody.getElementsByTagName("tr");
点击展开后面3
  • 1 回答
  • 1 关注
  • 1235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信