2014-04-12 94 views
1

我想抓住我網站上特定「組」的元素的內部文本。這些網頁,名爲「報表頁面」都有一些共同的HTML看起來像這樣:InnerHTML當沒有元素ID

<!-- start report description --> 
<div class="report-description-text"> 
<h5>Description</h5> 
Hello World, here is a sample report. 
<br/> 

這是我使用的平臺生成的HTML。對我來說,啓動「Hello World」的文本不包含在它自己的標記中,例如<p>標記,但這就是我所擁有的。

我正在嘗試爲搜索和社交打開圖創建動態元標記。在這種情況下,我想將文本「Hello World,這是一個示例報告」作爲元描述。

互聯網說使用getElementsById但這裏沒有ID。

我附加了一個顯示選擇的Chrome檢查元素的屏幕。

我將如何分配給一個變量上述提到的文字,像這樣:

VAR descrptn = [什麼我放在這裏?]

產生: 文件撰寫(descrptn);

這將使 世界您好,這裏是一個示例報告

這裏你可以看到實際的樣品頁:http://tinyurl.com/qxvm5y7

enter image description here

+0

在我的問題中,我以「Hello World ...」爲例,int他的屏幕截圖相應的文字是「歡迎來到Ushahidi ...」 –

+0

感謝下面的答案,我很感謝你的迴應。並不是說答案很複雜,它看起來很直截了當,但並不像我想象的那麼簡單。 我在Chrome中調用控制檯,回想一下我讀過的關於使用點符號導航DOM的JS教科書。 我期待(並嘗試)使用以下內容: document.getElementsByClassName('report-description-text')。h5.somethinghere 這聽起來是對的嗎?我在說廢話嗎? –

+1

如果您對答案進行評論以便作者能夠看到它們,那麼這會更容易。然而,你認爲在這裏可以使用'getElementsByClassName'是正確的。然而,[它比'querySelectorAll'更具有稀疏的支持](http://quirksmode.org/dom/core/)。另外,在某些情況下,使用點符號不是我遇到的任何情況,除了「forms」。此外,如果它不是一個約束,你應該考慮使用'jQuery'進行這種DOM操作任務,以獲得對所有IE6瀏覽器的支持。 –

回答

0

如果你打算只支持IE8 +,那麼你就可以safe(ish)ly使用.querySelectorAll然後步行穿過孩子找到您所在的文本節點:

var elems = document.querySelectorAll('.report-description-text'); 
var totalElems = elems.length; 
for(var ii = 0; ii < totalElems; ii++) { 
    if (elems[ii].childNodes && 
     elems[ii].childNodes.length >= 2 && 
     elems[ii].childNodes[1].nodeType === 3){ /* make sure it is a TEXT_NODE */ 

     description = elems[ii].nodeValue; 
     document.write(description); 
    } 
} 
+0

@DavidThomas啊,很好的接收。謝謝。 –

相關問題