JavaScript 函数在某些网页上没有拼接 运行

JavaScript function splice not running on certain web pages

所以我正在为 grease-monkey 机器人编写一些代码,但在网站上,该机器人用于 JavaScript 函数 splice() 无法识别,并且在 运行 时完全不执行任何操作。我正在使用的数组由大约 100 个左右不同的元素组成,这些元素都是从网页中获取的,然后我需要对它们进行排序,如果它们具有某种样式,则删除某些元素,如...(变量较早初始化)

list = document.getElementById("raffles-list").children;
while (a > list.length) {
 if (list[a].style != "") {
  list.splice(a, 1);
  a++;
 }
}

我知道这与我的电脑无关,因为我可以在其他网站上进行拼接,所以有没有一种方法可以在不进行拼接的情况下删除元素,或者有什么方法可以让它继续工作网站?

它发生了,因为 Node.children returns HTMLCollection,那不是数组,也没有拼接方法 - for more information look MDN.

你可以使用Array.prototype.splice.call(list, a, 1),这个必须做的事情。

要删除 HTMLCollection 的项目,请使用删除功能:

list[a].remove();

下面是一个演示功能的代码片段,您需要相应地调整您的逻辑。

var list = document.getElementById("somelist").children;
 
//not knowing what your initial a value, setting it to zero
var a =0;
var output = document.getElementById("output");
//go through the list
while (list.length>0) {
    //get an item
    var item = list.item(0);
    output.innerHTML+="Removed: " + item.innerHTML+"<br/>";
    list[0].remove();
}
<ul id="somelist">
    <li style='a'>what</li>
    <li style='b'>is</li>
    <li style=''>this</li>
</ul>
<p>Output:</p>
<div id="output"></div>