亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

怎么理解這句

var tbody = document.getElementById('table').lastChild;?

為什么是lastChild?? 這是lastChild? 是不是最后一行???

正在回答

2 回答

lastChild返回文檔的最后一個子節點。

這行代碼的意思就是:關鍵詞var定義一個變量tbody,并且給它賦值,獲取到ID為table的最后一個子節點。

這個HTML文檔中,table的子節點的<tr>,它的最后一個子節點同樣也是<tr>。沒錯,lastChild獲取到的就是最后一行。?

1 回復 有任何疑惑可以回復我~
#1

花語白茶 提問者

添加的時候 用lastChiled 好理解 為什么刪除的 時候也是最后一行呢
2015-03-18 回復 有任何疑惑可以回復我~
#2

Perona 回復 花語白茶 提問者

呃,你看得誰的代碼?。看a貼出來吧。還有刪除的時候應該是刪除當前行。
2015-03-18 回復 有任何疑惑可以回復我~
#3

花語白茶 提問者 回復 Perona

貼不下 看我的回答
2015-03-18 回復 有任何疑惑可以回復我~

<!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 tbody = document.getElementById('table').lastChild;?? ?
?? ??? ??? ?trs = tbody.getElementsByTagName('tr');? ?
?? ??? ?for(var i =1;i<trs.length;i++){
?? ??? ??? ?trs[i].onmouseover = function(){
?? ??? ??? ??? ?this.style.backgroundColor ="#f2f2f2";
?? ??? ??? ?}
?? ??? ??? ?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);? ?
?? ??? ??? ?
? ??? ? }

?? ? 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>

0 回復 有任何疑惑可以回復我~
#1

Perona

分析一下,標簽<table>就算沒寫<tbody>,頁面也會自動生成<tbody>(注:表格主體(正文))。那么有<tbody>在的時候,lastchaild除了獲取到最后一行<tr>,也會獲取到table標簽的主體部分。 tbody.removeChild(tr);就是用主體部分去移除當前行。 這種方式有點繞,不好理解。推薦用這種 function del(obj) { var tr=obj.parentNode.parentNode; tr.parentNode.removeChild(tr); } 簡單明了,代碼還少~~~
2015-03-18 回復 有任何疑惑可以回復我~
#2

花語白茶 提問者 回復 Perona

OK 這樣是理解了 謝了
2015-03-18 回復 有任何疑惑可以回復我~
#3

請不要回信 回復 Perona

謝謝啊,我真的是被lastchild卡住了呢
2015-04-05 回復 有任何疑惑可以回復我~
#4

Perona 回復 請不要回信

不客氣
2015-04-05 回復 有任何疑惑可以回復我~
#5

Michael_O_O_ 回復 Perona

你提出的方法能明白,可是原答案中給出的lastChild還是沒明白,為何能表示當前行
2015-05-28 回復 有任何疑惑可以回復我~
#6

Perona 回復 Michael_O_O_

表格主體(正文))。那么有<tbody>在的時候,lastchaild除了獲取到最后一行<tr>,也會獲取到table標簽的主體部分<tbody>元素。 tbody.removeChild(tr);就是用主體部分去移除當前行。你可以用調試一下,你就會發現獲取到的就是<tbody>元素。
2015-06-03 回復 有任何疑惑可以回復我~
#7

Perona 回復 Michael_O_O_

表格主體(正文))。那么有<tbody>在的時候,lastchaild除了獲取到最后一行<tr>,也會獲取到table標簽的主體部分主體部分<tbody>元素。(注意哦,這個tbody元素不管<table></table>里面有沒有寫,它都會有的,所以其實<tbody>才是最后的節點,同時也是表格的主體部分。 tbody.removeChild(tr);就是用主體部分去移除當前行。你可以用調試一下,你就會發現獲取到的就是<tbody>元素。 慕課抽風了,剛才的回復居然給我吞了一半。
2015-06-03 回復 有任何疑惑可以回復我~
#8

fxai0516 回復 Perona

function del(obj)為什么括號里寫上obj? 這個obj從哪里來?麻煩解答下。謝謝。
2016-12-11 回復 有任何疑惑可以回復我~
#9

Perona 回復 fxai0516

obj是參數,去復習一下帶參數的函數那一節,在第五章。
2016-12-31 回復 有任何疑惑可以回復我~
查看6條回復

舉報

0/150
提交
取消

怎么理解這句

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號