2012-03-08 38 views
6

我正在使用JavaScript並希望遍歷HTML樹,獲取所有文本,因爲它顯示給用戶。但是,我正在失去空間信息。Javascript DOM,獲取節點文本而不會丟失間距信息

比方說,我有兩個文件:

<html>XXX<p>YY YY</p><html> 

<html>XXX<p>YY&nbsp;&nbsp;&nbsp;YY</p><html> 

第一個會出現在伊蘇1米之間的空間。第二個將有3個空格。但是,如果我遍歷樹,併爲每個#text節點,使用:

text = node.nodeValue; 

然後兩個節點的文本將有3位。我不知道哪一個具有「真正的」nbsp空格。我可以使用node.innerHTML作爲p元素,它將顯示nbsp,但我不認爲我可以使用innerHTML來獲取XXX文本(沒有某種文本減法)。

我可以得到整個文檔的innerHTML並解析它。不過,我也需要得到各元素,我將開始使用

window.getComputedStyle(theElement).getPropertyValue("text-align"); 

這樣的計算的風格,我會遍歷每個節點。此外,innerHTML顯示源代碼,而遍歷節點「修復」的HTML錯誤,添加結束標籤等,這是一件好事,我想保留。

+0

有趣的問題。你能顯示你當前的遍歷代碼嗎? – 2012-03-08 14:44:20

+0

我創建了一個遞歸調用的函數。該函數獲取元素的nodeName,如果它是#text元素,則獲取nodeValue。對於每個子元素(element.childNodes),它會調用該函數,返回名稱和值信息。 – user984003 2012-03-08 14:50:54

回答

1

如果您使用charCode進行測試,該怎麼辦?我相信經常使用的空間是32,而&nbsp;160

+0

你是對的!我測試了它,它工作。所以這些信息並沒有真正丟失。就是這樣,在我看來,它們都顯示爲空格。知道這一點,我大概也可以找到其他方法來獲取信息(例如,在我的Python代碼中,發送表單中的信息後)。現在我還需要考慮我需要做哪些其他轉換。我想所有的HTML實體等,謝謝! – user984003 2012-03-08 15:16:02