Javascript:在包含其他嵌套标签的范围内获取纯文本

时间:2014-03-23 18:31:55

标签: javascript dom html

只是你们要注意,我当然先读过这个: Javascript get text inside a <span> element

但是,我的情况并不那么容易,更不用说因为我需要在没有jQuery的情况下本地执行此操作。

假设我们在任意网页上都有这个:

<span id="entry1" class="entries">
<a href="http://whereyourpicis.at/pic.jpg" style="float: right; margin-left: 1em;"><img src="http://whereyourpicis.at/pic.jpg" border="0"></a>
++ This is the plain text we want to get from the SPAN block. ++
<span id="nested2"><a onclick="doSomething()">Action!</a></span>
</span>

我已经尝试了任何可以想象的东西,但我不能说我尝试过的任何“解决方案”都是一个很好的解决方案,因为它感觉就像一个完整的kludge采用整个 innerHTML然后做一些sed式的正则表达式魔术就可以了。

必须有一种更优雅的方式来实现这一点,这就是我在这里问的原因。

BTW我也发现即使nextSibling()也不能在这里工作。

2 个答案:

答案 0 :(得分:1)

我不确定这是否是您所需要的,因为您没有在示例代码中指定您需要的确切输出。

如果您需要按字面意思Strip HTML from Text JavaScript 你可以使用这样的函数:

function strip(html)
{
   var tmp = document.createElement("DIV");
   tmp.innerHTML = html;
   return tmp.textContent || tmp.innerText || "";
}

请检查:http://jsfiddle.net/shershen08/7fFWn/3/

答案 1 :(得分:0)

如果您只想获取元素中的文本节点,我认为您需要迭代元素的childNodes并获取文本节点。 Here's一个快速而简单的函数示例,它将仅从给定元素中获取文本节点(它还会跳过任何只是空白的文本节点,因为这些通常是作为HTML格式的结果而添加的,但是对人类来说真的没什么意义。)