如何在JS中使用Range对象

时间:2014-03-20 18:25:56

标签: javascript html dom range

这是一个非常广泛的问题。希望我可以简化它。我的身体中有以下HTML

<span>my <strong>text</strong> section seems to <a href="#">be</a> here</span>

我想得到这个范围的文字。我知道我可以使用Range对象然后使用.tostring()。但是,我怎样才能以正确的顺序获得所有部件?

  • 文本
  • 部分似乎
  • 这里

2 个答案:

答案 0 :(得分:1)

如果您要做的就是获取该范围内的文字,您可以这样做:

document.getElementsByTagName( 'span' )[ 0 ].innerText

如果你特别想要一个结果数组,分成几部分,我写了一个快速函数来完成这个:

function getText( node ) {
    var children = node.childNodes,
        len = children.length,
        arr = [],
        child, i;
    for ( i = 0; i < len; i++ ) {
        child = children[ i ];
        if ( child.nodeType === 3 ) arr.push( child.data );
        else arr.push.apply( arr, getText( child ) );
    }
    return arr;
}

这是一个JSFiddle:http://jsfiddle.net/nxgcd/1/

答案 1 :(得分:0)

如果您只想在不使用RegEx的情况下获取没有HTML的文本,那么只需使用:

document.getElementById("theSpan").innerText
//or
$("#theSpan").text() //Jquery

这是JavascriptJquery JSFiddle