2010-10-14 54 views
3

我很努力去破譯一種方法來刪除幾個不包含ID的特定href元素,並且是沒有ID的單個父母的孩子。javascript - 刪除沒有ID和特定內容的元素/節點

我可以管理的最好方法是通過URL本身內的特定詞識別出8個或9個href標籤中的四個違規標籤(並且數量可能有所不同)。對於這一點,我做到以下幾點:

<script language=javascript> 
var xx = document.getElementById('theID').getElementsByTagName('a'); 
var ptn=/\=media/; 
for(var i=0; i<xx.length; i++) { 
    if(ptn.exec(xx[i])){ 
    alert(xx[i]); 
    } 
} 
</script> 

當然,這一切給了我是在href其中「=媒體」存在內的四個特定的URL。現在,不知何故,我需要能夠刪除這些href元素或它們的父元素(碰巧是無序列表標籤)。直到我獲得更高的級別(表格單元格)才能獲得元素ID,或者除了URL本身內的特定單詞之外的任何區別。我可以接受任何方法 - PHP可能是一個選項(我真的還沒有探討過這個),但爲此,JavaScript是我的第一個合乎邏輯的選擇。我不能篡改直接生成鏈接的頁面,只有在頁面加載時纔會包含的輔助頁面。

任何關於如何解決這個問題的指針?

========================最終解決方案==================== =

<script language=javascript> 
var xx = document.getElementById('theID').getElementsByTagName('a'); 
var ptn=/\=media/; 
for(var i=0; i<xx.length; i++) { 
    while(ptn.exec(xx[i].href)){ 
     alert(xx[i]); 
     xx[i].parentNode.removeChild(xx[i]); 
    } 
} 
</script> 

回答

1

您不需要ID去除元素。你只需要引用元素(你似乎有)。

,而不是這樣的:

alert(xx[i]); 

試試這個:

XX[i].parentElement.removeChild(xx[i]); 
+0

太棒了!我已經接近一兩次了,但是還沒有到達終點。 – Adam 2010-10-15 17:21:53

+0

我很高興你能工作。不要忘記使用Andy E在您的正則表達式測試中使用href屬性的建議。 – 2010-10-15 18:06:22

1

您可以撥打removeChild()父元素,像這樣:

xx[i].parentNode.removeChild(xx[i]); 

作爲一個側面說明,你的正則表達式不在正在執行的頁面上執行roperty。改變你的if語句:

if(ptn.exec(xx[i].href)){ 
+0

好點 - 我已經相應更新。此外,似乎在執行「如果」是有問題的 - 我已切換到「時」,並得到我期待的結果。 – Adam 2010-10-15 17:24:16

0
var parent = xx[i].parentNode; 
parent.removeChild(xx[i]); 

http://www.onlinetools.org/articles/unobtrusivejavascript/chapter2.html的操作相似(向下滾動)的一些很好的例子。

+0

* removeNode()*是一種專有方法,並未在所有瀏覽器中實現。堅持* removeChild()*。 – 2010-10-14 21:53:39

+0

@安迪 - 是的,只是看起來並確認。編輯我的答案。 – 2010-10-14 21:55:43