2011-12-22 75 views
4

一個HTML元素我有一個像查找基於文本內容

<div> 
    <span>TV</span> 
</div> 

一個HTML代碼,我想通過documentObject找到這個span有文字「TV」,像getElementById等等......像getElementByText。我知道可以通過XPath/JQuery/Regex。

但我需要它僅通過DOM對象模型。因爲在我的上下文中只有DOM模型可用。 我看到幾個答案:

但這些都不是對我很有幫助,因爲我需要只通過DOM模型得到它。

回答

2

假設文檔格式足以解析爲合適的DOM對象樹,您可以遍歷整個結構而無需使用外部庫。根據結構的不同,您可能需要檢查每個節點以查找所有匹配項,並且這可能會很慢。如果您有權訪問任何類型的ID,則可以縮小搜索範圍並提高性能。

您需要的關鍵屬性是每個DOM節點上的childNodes集合。從BODY(或其他容器)開始,您可以遍歷所有子節點。

This site非常基本,但顯示了用於訪問DOM元素的無依賴關係的方法。請參閱「用於導航到某個元素的工具」一節。

我注意到你提到了正則表達式作爲查找元素的一種手段。正則表達式對解析整個文檔很差,但對於評估單個節點的文本內容(例如部分匹配,模式匹配,不區分大小寫等),它們非常有用。正則表達式是JavaScript語言本身的一部分,並且已經如此十多年來。

0

只有我能想到的事情是這樣的:

function getElementByTextContent(text) 
{ 
    var spanList = document.getElementsByTagName("span"); 
    for (var i = 0, len = spanList.length; i < len; i++) 
    { 
     if(spanList[i].textContent === text) // use .innerHTML if you need IE compatibility 
     return spanList[i] 
    } 
} 
當然,假設你只搜索 <span>元素

,但是這可能會爲你工作。這裏有一個演示:

http://jsfiddle.net/uATdG/