results.shift不是函数:firefox扩展

时间:2011-04-26 06:08:52

标签: javascript firefox-addon

我在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

3 个答案:

答案 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转换为数组

Most efficient way to convert an HTMLCollection to an Array