为了账号安全,请及时绑定邮箱和手机立即绑定

obj和this是什么关系啊,好迷,为什么//创建删除函数那里得到ID的最后要加lastChild

obj和this是什么关系啊,好迷,为什么//创建删除函数那里得到ID的最后要加lastChild

尼古拉车夫 2016-11-24 22:58: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(){          HighLight();      }           // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。        function HighLight(){        var tbody=document.getElementById("table");            trs=tbody.getElementsByTagName("tr"); for(var i=1; i<trs.length; i++){       trs[i].onmouseover=function(){                this.style.backgroundColor="#959851";          }               trs[i].onmouseout=function(){                this.style.backgroundColor="#fff";            } } }           // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;        function addOne(obj){            var tbody=document.getElementById("table").lastChild;            var tr=document.createElement("tr");            var td=document.createElement("td");            td.innerHTML="<input type'text'>";            tr.appendChild(td);                        td=document.createElement("td");            td.innerHTML="<input type'text'>";            tr.appendChild(td);                        td=document.createElement("td");            td.innerHTML="<a href='javascript:;' OnClick='deleteRow(this)'>删除</a>";            tr.appendChild(td);                        tbody.appendChild(tr);            HighLight();        }         // 创建删除函数        function deleteRow(obj){            var tbody=document.getElementById("table").lastChild;            var tr=obj.parentNode.parentNode;            tbody.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:;" OnClick='deleteRow(this)'>删除</a></td>   <!--在删除按钮上添加点击事件  -->   </tr>   <tr> <td>xh002</td> <td>刘小芳</td> <td><a href="javascript:;" OnClick='deleteRow(this)'>删除</a></td>   <!--在删除按钮上添加点击事件  -->   </tr>     </table>   <input type="button" value="添加一行" OnClick="addOne()" />   <!--在添加按钮上添加点击事件  --> </body></html>
查看完整描述

1 回答

已采纳
?
李晓健

TA贡献1036条经验 获得超461个赞

这个this 通俗并不准确的说,就是谁调用这个方法,这个方法里面的this就是谁  比喻

trs[i].onmouseover=function(){
   this.style.backgroundColor="#959851";
}
//  这里是trs[i]调用的onmouseover,所以这个方法里的 this就是 trs[i]

第二个问题  其实teble的格式是这样的

<table>
    <tbody>
        <tr>
            <td></td>
        </tr>
    </tbody>
</table>

这里不包括thead,  这个tbody就算你没有写,浏览器会自己加上的,tbody=document.getElementById("table").lastChild; 得到的就是 这个tbody

查看完整回答
1 反对 回复 2016-11-25
  • 尼古拉车夫
    尼古拉车夫
    我试了把<tbody>套上去,但是运行不了,然后为什么非要lastChild而firstChild就运行不了了呢?
  • 李晓健
    李晓健
    你在可在控制打印一下firstChild 看看是什么就行了
  • 尼古拉车夫
    尼古拉车夫
    不行,在lastChild的时候我在函数里写document.write(tbody.nodeName),按一下删除然后表格就消失了,显示的是TBODY。但是该成firstChild之后按删除就没有反应了。
点击展开后面1
  • 1 回答
  • 0 关注
  • 1168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信