不用this就不对 为什么呢请大家帮帮忙看一看

来源:9-22 编程练习

yikx

2019-01-31 19:45

<!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 a=document.getElementsByTagName("tr");
         
         for(var i=0;i<a.length;i++){
             
             a[i].onmouseover=function(){a[i].style.backgroundColor="#f2f2f2";}
             a[i].onmouseout=function(){
             a[i].style.backgroundColor="#fff";}
         }
  
     
  
  }
     
      // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
     function add(){
         var element=document.body.table;
         var ele1=document.createElement("tr");
         var ele2=document.createElement("td");
         var ele3=document.createElement("td");
         var ele4=document.createElement("td");
         ele2.innerHTML="添加行";
         element.appendChild(ele1);
         ele1.appendChild(ele2);
         ele1.appendChild(ele3);
         ele1.appendChild(ele4);
     }
      
     
     // 创建删除函数
     function remove1(){
         removeChild(document.body.table.childNode[1]);
     }
      function remove2(){
         removeChild(document.body.table.childNode[2]);
     }  </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:remove1();" >删除</a></td>   <!--在删除按钮上添加点击事件  -->    </tr>    <tr>  <td>xh002</td>  <td>刘小芳</td>  <td><a href="javascript:remove2();" >删除</a></td>   <!--在删除按钮上添加点击事件  -->    </tr>     </table>    <input type="button" value="添加一行" onclick="add()" />   <!--在添加按钮上添加点击事件  --> </body></html>


写回答 关注

2回答

  • qq_陈_12
    2019-04-27 10:44:05

    用a[i]的话,你期望的是,你给每个标签的事件里添加的function里找的a[i]是这个标签本身。

    实际上是错误的,他会先去看看i是几,然后再找a[i]是哪个标签,然而i是一直在变化的变量而不是常量。在for循环结束后,i的值将会等于数组的长度即a.length。此时,每个标签当鼠标移上去后,他会执行你之前循环添加的function,去找a[i]是哪个,然后改变它的背景颜色。他找到a[a.length]发现这个标签并不存在(数组下标最大值为a.length-1),所以【a[i].style.backgroundColor="#f2f2f2"】这句话就无效了。

  • KyuJ
    2019-03-20 19:51:37

    ...

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468726 学习 · 22053 问题

查看课程

相似问题