黑色丶毛衣
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>
change(alltr[i])错了,应改为change(this),this是指当前操作的元素,而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 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>
你可以看一下其他人是怎么写的
第一个问题:因为你新加的没有绑定鼠标滑动事件,添加后,你要重新遍历一次才行
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>
JavaScript进阶篇
468195 学习 · 21891 问题
相似问题