亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript - 一道js練習題,為什么這里最后getElementsByTagName(’a’)[0]是0

瀏覽:91日期:2023-05-16 18:12:48

問題描述

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <script>window.onload=function(){ var oTab = document.getElementById(’tab1’); var oName = document.getElementById(’name’); var oAge = document.getElementById(’age’); var oBtn = document.getElementById(’btn’); var id = oTab.rows.length+1; oBtn.onclick=function() {var oTr = document.createElement(’tr’);var oTd = document.createElement(’td’);oTd.innerHTML = id++;oTr.appendChild(oTd);var oTd = document.createElement(’td’);oTd.innerHTML =oName.value;oTr.appendChild(oTd);var oTd = document.createElement(’td’);oTd.innerHTML = oAge.value ;oTr.appendChild(oTd);var oTd = document.createElement(’td’);oTd.innerHTML = '<a href=’javascript:’>刪除</a>' ;oTr.appendChild(oTd);oTd.getElementsByTagName(’a’)[0].onclick=function(){ oTab.tBodies[0].removeChild(this.parentNode.parentNode);}oTab.tBodies[0].appendChild(oTr); }} </script></head><body> 姓名:<input type='text' /> 班級:<input type='text' /> <input type='button' value=’添加’ /> <table border='1px' width='600px'><tHead> <td>1</td> <td>2</td> <td>3</td> <td>操作</td></tHead><tbody> <tr><td>2</td><td>22</td><td>33</td><td></td> </tr> <tr><td>3</td><td>22</td><td>33</td><td></td> </tr> <tr><td>4</td><td>22</td><td>33</td><td></td> </tr></tbody> </table></body></html>

這個實現效果是一個表格中,最后一列添加刪除的效果,我搞不懂,createElement創建了a標簽添加刪除功能之后,為什么 oTd.getElementsByTagName(’a’)[0].onclick=function() 這里面TagName選的是[0],不是每一次都會創建一個a標簽來觸發js么。 為什么不是做個for循環給每個a來加onclick

問題解答

回答1:

javascript - 一道js練習題,為什么這里最后getElementsByTagName(’a’)[0]是0

回答2:

這是慕課網上JS的課程吧 ’oTd’本來就是 oBtn.onclick之后才會創建的元素 這里面的a元素當然也是新建的;為何還總是要用[0]? 因為getElementsTagName(’a’)返回的是一個元素list 即使長度只有1 也要用[0]或者.item(0)來拿到這個DOM元素

回答3:

javascript - 一道js練習題,為什么這里最后getElementsByTagName(’a’)[0]是0

通過你的代碼可知,此時的oTd是用來存放刪除鏈接的td元素,設置完innerHTML屬性之后,此時的td元素為<td><a href=’javascript:’>刪除</a></td>;oTd.getElementsByTagName(’a’)的返回值是該td元素(限定了選擇范圍,就是從包含這個a元素的父元素td中選擇,而不是table元素)中包含的a元素組成的數組,因為該td元素只包含一個a元素,所以結果是長度為1的數組,要獲取這個a元素,當然是取結果的[0]了(數組下標從0開始);

可以用一個for循環來添加onclick事件,你可以在每次執行完oTab.tBodies[0].appendChild(oTr);語句后,使用

var aArray = oTab.getElementsByTagName('a');for (var i = 0; i < aArray.length; i++) { aArray[i].onclick = function() {oTab.tBodies[0].removeChild(this.parentNode.parentNode); }}

但是問題是,你在第一個點擊添加的時候,給第一條添加信息的a元素注冊了點擊事件;當你第二次點擊添加的時候,因為第一條信息已經有點擊事件了,為什么還要再覆蓋一次點擊事件呢?你只需要給新添加的元素注冊點擊事件就可以了啊。

回答4:

動態創建的element元素是無法綁定click事件的,用使用到on或者bind。

標簽: JavaScript
主站蜘蛛池模板: 欧美高清在线精品一区二区不卡 | 亚洲黄色免费在线观看 | 亚洲天堂777 | 麻豆中文字幕 | 国产精品视_精品国产免费 国产精品视频一区二区三区 | 玖玖在线免费视频 | 成年人午夜 | 国产精品入口在线看麻豆 | 在线免费观看黄色小视频 | 一区二区免费在线观看 | 欧美黑人成人www在线观看 | 国产视频久久久久 | 日韩高清在线日韩大片观看网址 | 国产婷婷色一区二区三区深爱网 | 青青国产成人久久激情911 | 成人免费一级片 | 婷婷色网| 亚洲午夜免费视频 | 欧美一级淫片a免费播放口aaa | 1000部啪啪勿入十八免费 | 国产免费又色又爽又黄的网站 | 精品国产999| 亚洲女人天堂 | 国内精品视频 在线播放 | 日本特黄特色免费大片 | 高清在线精品一区二区 | 精品久久亚洲 | 18美女福利视频网站免费观看 | 国产欧美成人一区二区三区 | 在线二区 | 精品三级三级三级三级三级 | 在线视频免费观看短视频 | 一级特一级特色生活片 | 国产男同志gay毛片欧美 | 亚洲 欧美 自拍 另类 欧美 | 欧美黄色片一级 | 草在线视频 | 一区二区高清在线 | 精品久久久久亚洲 | 色在线播放 | 久久综合九色综合97婷婷女人 |