2014-10-16 16 views
1

我可以在元素中使用javascript設置換行符,但無法讀取它們。使用javascript檢測文本中的換行符

例子:

<div id="text"></div> 

JS:

document.getElementById("text").innerHTML = "Hello <br /> World"; 
var x = document.getElementById("text").innerHTML; 

if(x == "Hello <br /> World") 
{ 
alert('Match'); 
} 

有一個在我的情況不匹配......

+1

爲什麼你首先要做到這一點? – frenchie 2014-10-16 22:38:10

回答

5

這是一個很值得從來都不是一件好事,以獲得從.innerHTML財產一個對象,然後嘗試將其與某個確切的字符串進行比較。這是因爲瀏覽器唯一的合同是向您返回等價的HTML,而不一定是完全相同的HTML。如果您請求的內容中沒有嵌套的DOM元素,則這可能不成問題,但如果嵌套HTML元素,通常可能會出現問題。

例如,IE瀏覽器的某些版本會改變屬性的順序,改變報價,更改間距,等等

相反,你應該進行搜索的實際DOM你想要的東西,或者尋找只有您知道的HTML中較小的一部分無法更改或使用可容忍HTML中更改的搜索算法。

正如尼爾斯在評論中提到,鉻,IE11和Firefox都返回"Hello <br> World",你可以看到自己有一個簡單的調試聲明是這樣的:

console.log("'" + x + "'"); 

工作演示,看看自己是什麼它顯示: http://jsfiddle.net/jfriend00/zc59x2bL/


僅供參考,您的代碼還包含錯誤。您需要通過document.getElementById()一個字符串,它將是document.getElementById("test"),而不是document.getElementById(test)

+0

最有可能的是它正確地返回了HTML5風格的'
'而不是棄用的XHTML風格'
'。 – 2014-10-16 22:36:45

+0

@NielsKeurentjes不應該完全依賴於文檔類型嗎? – leemes 2014-10-16 22:48:25

+1

如果您使用正確的文檔類型***和***正確地觸發了XHTML模式,那麼他們可能會返回'
'並且應用程序/ xhtml + xml的內容類型。從來沒有見過任何人這樣做,可能值得一試。在HTML4 + 5中,以及使用'text/html'的半XHTML模式,正確的表示法是'
'。 – 2014-10-16 22:49:47

相關問題