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

时间:2015-10-31 17:21:58

标签: javascript function greasemonkey

所以我正在为一个油脂猴机器人编写一些代码,但在网站上,机器人用于JavaScript函数splice()无法识别,并且在运行时绝对没有。我正在使用的数组包含大约100个左右的不同元素,这些元素都来自网页,然后我需要对它们进行排序,如果它们具有某种样式,则将它们删除...(变量先前已初始化)

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

我知道这与我的电脑无关,因为我能够在其他网站上拼接,所以有没有办法可以在没有拼接的情况下删除元素,或者有没有办法让它在网站上工作?

2 个答案:

答案 0 :(得分:1)

会发生这种情况,因为Node.children会返回HTMLCollection,这不是数组而且没有拼接方法 - for more information look MDN

您可以使用Array.prototype.splice.call(list, a, 1),这必须做到这一点。

答案 1 :(得分:0)

要删除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();
}
&#13;
<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>
&#13;
&#13;
&#13;