如何让删除按钮在这段代码中起作用
2019-03-14
243
这是测试中的练习。
我需要让删除按钮正常工作。我也不明白为什么
document.getElementsByClassName("remove")[0].click();
这一行也在那里
这是代码
function setup() {
// Write your code here.
}
// Example case.
document.body.innerHTML = `
<div class="image">
<img src="someimage.jpg" alt="First">
<button class="remove">X</button>
</div>
<div class="image">
<img src="someimage.jpg" alt="Second">
<button class="remove">X</button>
</div>`;
setup();
document.getElementsByClassName("remove")[0].click();
console.log(document.body.innerHTML);
编辑:预期输出是删除按钮将删除父 div (class="image")
2个回答
它不起作用,因为“删除”按钮没有为其定义的
click
事件的回调函数。
此外,不应使用以下代码:
document.getElementsByClassName("remove")[0]
,因为它会导致创建实时节点列表,但只会丢弃其中第一个项目的节点列表。相反,应使用
document.querySelector(".remove")
。有关详细信息,请参阅此
我的另一篇文章
。
因此,如果我们添加
click
事件处理程序并清理您的代码,它将工作:
function setup() {
// Write your code here.
// This will set up a callback function for when the remove button gets clicked:
theRemoveButton.addEventListener("click", function(){
console.log("You clicked the remove button!");
this.closest(".image").remove();
});
}
// Example case.
document.body.innerHTML = `
<div class="image">
<img src="someimage.jpg" alt="First">
<button class="remove">X</button>
</div>
<div class="image">
<img src="someimage.jpg" alt="Second">
<button class="remove">X</button>
</div>`;
var theRemoveButton = document.querySelector(".remove");
setup();
theRemoveButton.click(); // Forces the click event to fire on the button
console.log(document.body.innerHTML);
Scott Marcus
2019-03-14
我不明白你的问题,但
document.getElementsByClassName("remove")[0].click();
行模拟了对具有名为“remove”的 css 类的第一个元素的单击,因此它毫无用处,因为没有事件附加到此元素。 我认为 addEventListener 函数正是你要找的。
Nil
2019-03-14