猿问

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

<!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

里测试的时候这个功能可以实现,不知道代码哪个地方出了兼容性错误?请好心的大神帮忙看看问题出在哪,感激不尽~!

小三是篮球
浏览 1236回答 1
1回答

柠檬酸钠

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