搜尋

首頁  >  問答  >  主體

javascript - 一道js練習題,為什麼這裡最後getElementsByTagName('a')[0]是0

<!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 id="name" type="text" />
    班级:<input id="age" type="text" />
    <input id="btn" type="button" value='添加' />
    <table id="tab1" 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

#######
女神的闺蜜爱上我女神的闺蜜爱上我2711 天前853

全部回覆(4)我來回復

  • typecho

    typecho2017-06-26 10:59:27

    回覆
    0
  • 迷茫

    迷茫2017-06-26 10:59:27

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

    回覆
    0
  • 代言
  • 高洛峰

    高洛峰2017-06-26 10:59:27

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

    回覆
    0
  • 取消回覆