obj.onmouseover=function(){}和obj.onmouseover=change() 的区别
我在回答http://www.imooc.com/code/1636的时候,碰到一个问题
在下面的自定义函数bgchange中,如果我调用change函数,则默认给出的前俩行的背景颜色不会改变,而自己添加的背景颜色可以改变;
如果我在后边直接function(){function body},则都可以改变,不知道这是为什么?
求解答!
<!DOCTYPE html> <html> <head> <title> new document </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script type="text/javascript"> // function mouseEvent(){ // var trs= document.getElementsByTagName("tr"); // for (var i=0;i<trs.length;i++){ // trs[i].setAttribute("onmouseover","change(this)"); // trs[i].setAttribute("onmouseout","back(this)"); // } // // } function change(ev){ ev.style.backgroundColor="#f2f2f2"; } function back(ev){ ev.style.backgroundColor="#fff"; } function removeEvent(){ var as= document.getElementsByTagName("a"); for (var i=0;i<as.length;i++){ as[i].setAttribute("onclick","deleteraw(this)"); } } function bgchange(obj){ #这里为什么=change(obj)不可以,而=function(){}就可以? obj.onmouseover = change(obj);//function(){ obj.style.backgroundColor="#f2f2f2"; }; obj.onmouseout = back(obj); //function(){ obj.style.backgroundColor="#fff" }; } window.onload = function(){ // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。 //mouseEvent(); removeEvent(); var trs=document.getElementsByTagName("tr"); for(var i=0;i<trs.length;i++){ bgchange(trs[i]); } } // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点; function add(){ var table=document.getElementById("table"); var newtr=document.createElement("tr"); newtr.setAttribute("onmouseover","change(this)"); newtr.setAttribute("onmouseout","back(this)"); var newtd1=document.createElement("td"); var newtd2=document.createElement("td"); var newtd3=document.createElement("td"); newtd1.innerHTML="XX"; newtd2.innerHTML="YY"; var newa=document.createElement("a"); newa.href="javascript:;" newa.setAttribute("onclick","deleteraw(this)"); newa.innerHTML="删除"; table.appendChild(newtr); newtr.appendChild(newtd1); newtr.appendChild(newtd2); newtr.appendChild(newtd3); newtd3.appendChild(newa); } // 创建删除函数 function deleteraw(ev){ var pa =ev.parentNode.parentNode.parentNode; pa.removeChild(ev.parentNode.parentNode); } </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:;" >删除</a></td> <!--在删除按钮上添加点击事件 --> </tr> <tr> <td>xh002</td> <td>刘小芳</td> <td><a href="javascript:;" >删除</a></td> <!--在删除按钮上添加点击事件 --> </tr> </table> <input type="button" value="添加一行" onclick="add()"/> <!--在添加按钮上添加点击事件 --> </body> </html>