2013-02-05 87 views
1

我目前正在研究Greasemonkey的這個腳本。此腳本的目標是從網站MeetMe.com的供稿中刪除特定用戶的帖子。
我的代碼是:getElementById javascript undefined

// ==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的「檢查元素」功能。頁面上的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類。

我希望我已經清楚,簡潔,易於幫助,但如果需要其他信息以幫助我,請告訴我,我會發布它。我的問題是什麼導致childrenundefined?提前致謝。

+1

'.childnodes'應該是'.childNodes'。並且注意並不是每個孩子都是一個元素節點。如果你只想要元素節點,使用'.children'。 –

回答

1

JavaScript是區分大小寫的,它是childNodes而不是childnodes。順便說一句,因爲你可能只想迭代元素節點(沒有文本節點,評論等),請使用children collection。此外,您幾乎不需要window.onload,因爲GreaseMonkey腳本默認執行on DOMready

+0

哦,老兄,我會解決這個問題,看看會發生什麼。謝謝! – user2044929

+0

另外,還要感謝其他提示。我現在正在研究它。 – user2044929

+0

如果這個答案適用於你(它應該),請[勾選它旁邊的複選標記](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/ 5235#5235)。 –

0

大寫!

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