nik*_*rao 5 javascript removeclass getelementsbyclassname
请参考小提琴 - http://jsfiddle.net/fkwwyvz8/
x = document.getElementsByClassName("buddy_blocks");
for(i=0;i<x.length;i++)
x[i].remove();
Run Code Online (Sandbox Code Playgroud)
单击最后一个按钮,它必须删除所有其他按钮,但它不会并且只删除其中一些按钮,不知道为什么?有什么方法可以删除所有这些按钮吗?
由于您的代码中似乎已经包含 jQuery,因此您可以使用它来删除所有按钮:
$(".buddy_blocks").remove();
Run Code Online (Sandbox Code Playgroud)
您的尝试没有成功,原因有两个:
document.getElementsByClassName()返回一个动态的 nodeList,每次删除一个元素时它都会在你的下面发生变化,这会导致你在迭代中错过元素.remove()方法(无论如何在大多数浏览器中 - 这是一个建议的方法,但尚未广泛使用)。父级有一个.removeChild()您可以使用的方法。在普通的 Javascript 中,您可以向后设置迭代,这样当您删除元素并导致动态 HTMLCollection 发生更改时,它不会扰乱您的迭代,因为更改将是您已经传递的元素。并且,切换到.removeChild()这样使用:
function f() {
var x = document.getElementsByClassName("buddy_blocks");
for(var i = x.length - 1; i >= 0; i--) {
x[i].parentNode.removeChild(x[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
另外,请使用var所有打算作为函数本地变量的变量,这样您就不会创建“意外的全局变量”,这将导致将来某个时候很难找出错误。
或者,在 2021 年的现代浏览器中,您可以使用document.querySelectorAll()(因为它不返回实时集合并且是可迭代的)并且您可以使用.remove(),因为所有现代浏览器都支持它:
function f() {
const items = document.querySelectorAll(".buddy_blocks");
for (let item of items) {
item.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13986 次 |
| 最近记录: |