2012-03-08 53 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