2014-10-03 230 views
0

我試圖找出一種方法來獲取JavaScript中的元素後面的文本,但沒有經典的解決方法。我的標記是:獲取元素的內部文本

<div class='el'> 
    <span class='fa fa-user'></span> Dollynho 
</div> 

我只想詞「Dollynho」,但沒有劈裂的.el的innerHTML。我可以這樣做:

var xs = document.getElementsByClassName('el')[0] 
console.log(xs.split('>')[2].trim()) # => "Dollynho" 

我可以用更清潔的方式做到嗎? (無正則表達式,請致電

在此先感謝!

+0

僅有一個指針:提防返回的文本是不跨瀏覽器常數。有些瀏覽器會返回空格和'\ n'以及文本字符串,其他瀏覽器則不會。因此,如果您將文本與某個字符串進行比較,請不要依賴該方法,請在比較之前嘗試修剪(並可能刪除內部空間)。 – acdcjunior 2014-10-03 11:39:18

回答

1
var xs = document.getElementsByClassName('el')[0]; 
xs.innerText; 
在Firefox

,如果你希望你的.el類的HTML檢索可能需要用戶在你的腳本代碼textContent

+0

讓我們不要忘記'[0]' – akinuri 2014-10-03 11:23:53

+0

@akinuri好趕上:) – skyfoot 2014-10-03 11:27:41

0

使用此:

變種X = $(」厄爾尼諾「)。html的();

1

迭代通過所有的childNodes和搶文本類型的子節點的內容,然後取出spureous \ n

var childNodes = document.getElementsByClassName('el')[0].childNodes; 

var textContent = ""; 
for(var i=0; i<childNodes.length; i++) { 
    if(childNodes[i].nodeType==3 ) { 
     textContent+=childNodes[i].data; 
    } 
} 
textContent= textContent.replace(/\r?\n|\r/g,""); 

小提琴:http://jsfiddle.net/53rx1t0o/11/

+1

這是迄今爲止最好的答案,因爲它不僅適用於示例的情況下,它也可以工作,如果文本先於跨度,如果有是多個跨度(或其他元素),以及是否有多個文本節點。另外,它具有最好的跨瀏覽器支持。除\ n之外,請考慮替換\ r。 – 2014-10-03 11:38:12

+0

@RickHitchcock好點!用更聰明的替換更新答案。 – 2014-10-03 11:48:30

0

你可以使用jQuery

獲取文本
$(".el").text()