【发布时间】:2017-09-23 23:31:01
【问题描述】:
为什么我的按钮需要被点击两次才能触发 onclick 事件? stackoverflow 上还有其他一些线程存在同样的问题,但在我发现的所有线程中,原始海报将事件处理程序放在函数内。我的代码不是这样的。
HTML
<body>
<ul id="parentList">
<li>First child</li>
<li>Second child</li>
<li>Third child</li>
<li>Forth child</li>
<li>Fifth child</li>
</ul>
<button type="button" id="delete">Delete first child</button>
</body>
脚本:
var parentList = document.getElementById("parentList");
document.getElementById("delete").onclick = function() {
parentList.removeChild(parentList.firstChild);
};
【问题讨论】:
-
你试过在函数中定义 parentList 吗?
-
@FelixHäberle 你是什么意思?它需要被点击两次,但是
- 子元素确实被移除了,所以浏览器必须识别 parentList 不是吗?
-
我认为 parentList 在第一次点击时超出了范围。将你的第一行 js 行复制到函数中。
-
@FelixHäberle
parentList超出范围是什么意思? -
为什么不改用
firstElementChild?这样你就可以确定你正在删除一个元素,而不是一个文本节点。 developer.mozilla.org/docs/Web/API/ParentNode/firstElementChild
标签: javascript html event-handling