有三个小问题,先谢过大神了

来源:9-22 编程练习

黑色丶毛衣

2015-10-19 18:29

第一个:为什么新添加的一行没有改变背景颜色的效果?

window.onload = function(){代码};

onload事件是在网页加载完毕后立即执行的吧!

怎样做才能给新添加的一行添加效果呢?

第二个:以下这两个函数代码可以整合吗?

      window.onload = function(){
     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
    var alltr=document.getElementsByTagName('tr');
    for(var i=0;i<alltr.length;i++){
            change(alltr[i]);
        }
    };
    
    function change(co){
        co.onmouseover=function(){
            co.style.backgroundColor="#f2f2f2";
        }
        co.onmouseout=function(){
            co.style.backgroundColor="#fff";
        }
    }

我整合之后的结果是:

      window.onload = function(){     
     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
    var alltr=document.getElementsByTagName('tr');
    for(var i=0;i<alltr.length;i++){
        alltr[i].onmouseover=function(){
            alltr[i].style.backgroundColor="#f2f2f2";
        }
        alltr[i].onmouseout=function(){
            alltr[i].style.backgroundColor="#fff";
        }
    }
}

如果可以整合的话,我代码哪错了?

第三个:以下两个删除函数为什么传入this参数的才有效果?

    function Remove(x){
        var gettr=x.parentNode.parentNode;
        gettr.parentNode.removeChild(gettr);
    }
    
    function Del(){
        var gett=this.parentNode.parentNode;
        gett.parentNode.removeChild(gett);
    }

html绑定事件为:

	   <tr>
		<td>xh001</td>
		<td>王小明</td>
		<td><a href="javascript:Del();" >删除</a></td>   <!--在删除按钮上添加点击事件  -->
	   </tr>

	   <tr>
		<td>xh002</td>
		<td>刘小芳</td>
		<td><a href="javascript:;" onclick="Remove(this);" >删除</a></td>   <!--在删除按钮上添加点击事件  -->
	   </tr>


写回答 关注

3回答

  • 乐乐520
    2015-11-05 22:37:38

    change(alltr[i])错了,应改为change(this),this是指当前操作的元素,而alltr[i]是一个不具体的东西

  • menghuanbaolei
    2015-10-20 10:35:47
    <!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 alltr=document.getElementsByTagName('tr');
        for(var i=0;i<alltr.length;i++){
                change(alltr[i]);
            }
        };
         
        function change(co){
            co.onmouseover=function(){
                co.style.backgroundColor="#f2f2f2";
            }
            co.onmouseout=function(){
                co.style.backgroundColor="#fff";
            }
        }
          // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
        var num=2;
        function add(){
            num++;
            var tr=document.createElement('tr');
            var tnum=document.createElement('td');
            tnum.innerHTML="xh00"+num;
            var tname=document.createElement('td');
            tname.innerHTML="第"+num+"名";
            var ta=document.createElement('td');
            ta.innerHTML="<a href='javascript:;' onclick='Remove(this)' >删除</a>";
            document.getElementById('table').appendChild(tr);
            tr.appendChild(tnum);
            tr.appendChild(tname);
            tr.appendChild(ta);
             var alltr=document.getElementsByTagName('tr');
            for(var i=0;i<alltr.length;i++){
                    change(alltr[i]);
                }
        }
        // 创建删除函数
         function del(obj)
         {
             var tr=obj.parentNode.parentNode;
             tr.parentNode.removeChild(tr);
         }
         
      </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:Del();" >删除</a></td>   <!--在删除按钮上添加点击事件  -->
           </tr>
     
           <tr>
            <td>xh002</td>
            <td>刘小芳</td>
            <td><a href="javascript:;" onclick="Remove(this);" >删除</a></td>   <!--在删除按钮上添加点击事件  -->
           </tr>  
     
           </table>
           <input type="button" value="添加一行" onclick='add();'/>   <!--在添加按钮上添加点击事件  -->
     </body>
    </html>

    你可以看一下其他人是怎么写的

  • menghuanbaolei
    2015-10-19 20:35:49

    第一个问题:因为你新加的没有绑定鼠标滑动事件,添加后,你要重新遍历一次才行

     var alltr=document.getElementsByTagName('tr');
        for(var i=0;i<alltr.length;i++){
                change(alltr[i]);
            }
        };

     第二个问题:可以,不过不是你那样子整合(太恶心了),这样子就好了,以后也方便调用。

    第三那个问题:这样字表示的是当前的元素,不然的话根本不知道要删除哪个。

    最后面这个是我照着你的方法写地,修改好了,可以成功运行:

    错误的原因是,你没有重新绑定滑动事件

    <!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 alltr=document.getElementsByTagName('tr');
        for(var i=0;i<alltr.length;i++){
                change(alltr[i]);
            }
        };
        
        function change(co){
            co.onmouseover=function(){
                co.style.backgroundColor="#f2f2f2";
            }
            co.onmouseout=function(){
                co.style.backgroundColor="#fff";
            }
        }
          // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
        var num=2;
        function add(){
            num++;
            var tr=document.createElement('tr');
            var tnum=document.createElement('td');
            tnum.innerHTML="xh00"+num;
            var tname=document.createElement('td');
            tname.innerHTML="第"+num+"名";
            var ta=document.createElement('td');
            ta.innerHTML="<a href='javascript:;' onclick='Remove(this)' >删除</a>";
            document.getElementById('table').appendChild(tr);
            tr.appendChild(tnum);
            tr.appendChild(tname);
            tr.appendChild(ta);
             var alltr=document.getElementsByTagName('tr');
            for(var i=0;i<alltr.length;i++){
                    change(alltr[i]);
                }
        }
         // 创建删除函数
        function Remove(x){
            var gettr=x.parentNode.parentNode;
            gettr.parentNode.removeChild(gettr);
        }
        
        function Del(){
            var gett=this.parentNode.parentNode;
            gett.parentNode.removeChild(gett);
        }
      </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:Del();" >删除</a></td>   <!--在删除按钮上添加点击事件  -->
    	   </tr>
    
    	   <tr>
    		<td>xh002</td>
    		<td>刘小芳</td>
    		<td><a href="javascript:;" onclick="Remove(this);" >删除</a></td>   <!--在删除按钮上添加点击事件  -->
    	   </tr>  
    
    	   </table>
    	   <input type="button" value="添加一行" onclick='add();'/>   <!--在添加按钮上添加点击事件  -->
     </body>
    </html>


    黑色丶毛衣

    感谢了,不过第二个问题整合之后并不能运行!第三个问题的‘Del()’删除函数并不能运行,我绑定在第一行上面的!

    2015-10-20 09:40:50

    共 1 条回复 >

JavaScript进阶篇

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

468195 学习 · 21891 问题

查看课程

相似问题