getElementById javascript未定义

时间:2013-02-05 23:26:17

标签: javascript greasemonkey getelementbyid

我目前正在为Greasemonkey编写这个脚本。此脚本的目标是从MeetMe.com网站的Feed中删除特定用户的帖子 我的代码是:

// ==UserScript==
// @name        PostBeGone
// @namespace   TestingNameSpace
// @include     http://www.meetme.com/apps/home
// @version     1
// ==/UserScript==
var posterId;
var blacklist = new Array();
var toDelete;
blacklist [0] = 45112400; //These are just random peoples' user Id's that I am
blacklist [1] = 9649820;  //using to test this script
blacklist [2] = 55907221;
blacklist [3] = 56788411;
window.onload = function checkAndRemove () {
    var children = document.getElementById('feedReloadArea').childnodes;
    alert(children); //alert says "undefined"
    i = 0;
    While (i < children.length) 
    {
        posterId = children[i].getAttribute('data-poster');
        toDelete = null;

        i2 = 0;
        while (i2 < blacklist.length)
        {
            if (posterId == blacklist[i2])
            {
                toDelete = children[i];
                break;
            }
            i2++;
        }
        if (toDelete != null)
        {
            toDelete.parentNode.removeChild(toDelete);
        }
        i++;
    }
}

使用具有多个执行的各种警报,我知道代码执行到alert(children),即返回undefined

在我的脚本中有window.onload =之前,在搜索Google和本网站寻求答案时,我读了很多地方,问题可能是脚本在页面加载之前尝试执行,所以我添加了window.onload =。然而,问题仍然存在,我找不到任何与我相似的问题来理解它。

要查看元素的html代码,我一直在使用Firefox的“Inspect Element”功能。页面上可能有用的html代码片段是:

<div id="feedReloadArea" style="display: block;">  
     <div class="feedItemArea feedSpotlightHighlight" data-comment-maintenance="0" data-created-at="1360098729.05091" data-numeric-reference-id="" data-reference-uuid="0d76957f-2f64-4654-99ea-f67974116b32" data-entity="StatusUpdate" data-poster="59538173" data-uuid="b9e85465-5b91-4b5c-a443-c4e37d716481"></div><div class="feedItemArea" data-comment-maintenance="0" data-created-at="1360103761.624714" data-numeric-reference-id="" data-reference-uuid="c2c201ca-a391-4fff-aec2-9823a3e90815" data-entity="StatusUpdate" data-poster="45508368" data-uuid="11149a32-38cf-4919-b081-0bd39bdc49eb"></div>
     <div class="feedItemArea" data-comment-maintenance="0" data-created-at="1360103737.756343" data-numeric-reference-id="" data-reference-uuid="997824a2-994c-467f-bfbe-aa4beb1e402f" data-entity="StatusUpdate" data-poster="38033716" data-uuid="bc075882-771c-4ee2-ad28-dbf21fbf3bd3"></div>  

澄清一下,这只是HTML代码的一部分。 Feed中有许多类,因为每个类代表一个用户的帖子。此外,每个类都有多个,例如用户的链接和用户的个人资料图片。但是,我想要删除与黑名单中任何一个相同的海报ID的完整feedItemArea类。

我希望我能够清晰简洁地提供帮助,但如果需要任何其他信息以便帮助我,请告诉我,我会发布。我的问题是children导致undefined的原因是什么?提前谢谢。

2 个答案:

答案 0 :(得分:1)

JavaScript区分大小写,而childNodes代替childnodes。顺便说一下,既然您可能只想迭代元素节点(没有文本节点,注释等),请使用children collection。此外,您几乎不需要window.onload,因为默认情况下会执行GreaseMonkey脚本on DOMready

答案 1 :(得分:1)

大写!

var children = document.getElementById('feedReloadArea').childnNodes;