如何使用Javascript直接在HTML标记下提取文本

时间:2013-03-23 20:01:30

标签: javascript html

我需要提取直接在HTML标记下的文本。例如,如果我的HTML看起来像:

<span>This is Outside Text
      <span>This is Inside Text</span>
</span>

然后我需要一种方法来提取“这是外部文本”而不​​是“这是内部文本”。 我尝试了“innerHTML”,innerText“,”textContent“,并尝试使用RegEx (虽然我不是很擅长)。但我无法找到解决方案。任何帮助都会是非常感谢。

请注意,由于某些技术限制,我需要使用“普通”Javascript NOT jQuery (我知道这只是Javascript,但我是禁止将其用于此解决方案)

3 个答案:

答案 0 :(得分:1)

使用您的HTML结构,您可以尝试此操作 - DEMO

alert ( document.querySelector( "span" ).firstChild.nodeValue );

答案 1 :(得分:0)

你可以这样做。如果在第二个跨度之后有更多文本,它也可以工作。

 <span id="span1">This is Outside Text
  <span id="span2">This is Inside Text</span>
 </span>


var element = document.getElementById("span1");
var element2 =  document.getElementById("span2");

var text = element.textContent.replace(element2.textContent, "");

alert(text);

http://jsfiddle.net/btevfik/y58xJ/

答案 2 :(得分:0)

您正在寻找文本children(类型3的childNodes):

var children=document.getElementById("mySpan").childNodes,
    count=children.length,
    text="";

for (var i=0;i<count;i++) {
    if (children[i].nodeType==3) {
        text+=children[i].nodeValue;
    }
}

现场演示:http://jsfiddle.net/aDgPj/