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>
所以我正在为 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>