84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
この実装の効果は、テーブルの最後の列の追加と削除の効果です。理由がわかりません oTd.getElementsByTagName('a')[0].onclick=function( ) ここで選択された TagName は次のとおりです[0]. jsを起動するために毎回aタグを作成していませんか? for ループを作成して、各 a に onclick
这是慕课网上JS的课程吧 'oTd'本来就是 oBtn.onclick之后才会创建的元素 这里面的a元素当然也是新建的;为何还总是要用[0]? 因为getElementsTagName('a')返回的是一个元素list 即使长度只有1 也要用[0]或者.item(0)来拿到这个DOM元素
通过你的代码可知,此时的oTd是用来存放删除链接的td元素,设置完innerHTML属性之后,此时的td元素为<td><a href='javascript:'>删除</a></td>;oTd.getElementsByTagName('a')的返回值是该td元素(限定了选择范围,就是从包含这个a元素的父元素td中选择,而不是table元素)中包含的a元素组成的数组,因为该td元素只包含一个a元素,所以结果是长度为1的数组,要获取这个a元素,当然是取结果的[0]了(数组下标从0开始);
<td><a href='javascript:'>删除</a></td>
oTd.getElementsByTagName('a')
[0]
可以用一个for循环来添加onclick事件,你可以在每次执行完oTab.tBodies[0].appendChild(oTr);语句后,使用
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元素注册了点击事件;当你第二次点击添加的时候,因为第一条信息已经有点击事件了,为什么还要再覆盖一次点击事件呢?你只需要给新添加的元素注册点击事件就可以了啊。
动态创建的element元素是无法绑定click事件的,用使用到on或者bind。
这是慕课网上JS的课程吧 'oTd'本来就是 oBtn.onclick之后才会创建的元素 这里面的a元素当然也是新建的;
为何还总是要用[0]? 因为getElementsTagName('a')返回的是一个元素list 即使长度只有1 也要用[0]或者.item(0)来拿到这个DOM元素
通过你的代码可知,此时的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);
语句后,使用但是问题是,你在第一个点击添加的时候,给第一条添加信息的a元素注册了点击事件;当你第二次点击添加的时候,因为第一条信息已经有点击事件了,为什么还要再覆盖一次点击事件呢?你只需要给新添加的元素注册点击事件就可以了啊。
动态创建的element元素是无法绑定click事件的,用使用到on或者bind。