我在Firefox JS扩展程序中编写了这段代码
var results = gBrowser.contentDocument.getElementsByClassName("b-serp-item__title-link");
alert(results.length);
var countToDelete = results.length - 10;
alert(countToDelete);
if (countToDelete > 0)
{
for (var i = 0; i < countToDelete; i++);
{
alert("I prepare");
results.shift();
alert("I done");
}
}
alert("succ");
我有这个输出
results.length = 12 countToDelete = 2 (我准备)
并且......就是这样 results.shift();有一个问题; 我查看了Firefox错误控制台,我发现了这个
“results.shift不是函数”
为什么呢?移位是js功能吗? 当我尝试在firefox控制台中运行此代码时,我再次遇到此错误
什么事?
我的Firefox版本是4。 经测试的网址为http://yandex.ru/yandsearch?text=%D0%BE%D0%B1%D0%BE%D0%B9%D0%BD%D1%8B%D0%B9+%D0%BA%D0%BB%D0%B5%D0%B9+%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C&lr=37
答案 0 :(得分:1)
我认为很明显Gecko中没有shift()
这样的东西:
https://developer.mozilla.org/En/DOM/NodeList
主要问题是你想通过它实现什么目标?通过从NodeList
中删除项目,您肯定不会从DOM文档中删除它们。你与removeChild()
的争吵是什么?
答案 1 :(得分:1)
这会将您的nodelist
转换为真实的Array
,其中包含可用的shift
方法:
var results = Array.prototype.slice.call(
gBrowser
.contentDocument
.getElementsByClassName("b-serp-item__title-link")
);
答案 2 :(得分:0)
如果要使用shift():
,则需要将HTMLCollection转换为数组