Javascript中所选文本的nodeName

时间:2010-09-24 13:16:16

标签: javascript getselection selectedtext

我的HTML看起来像这样:

<span id="text">
 <span class="segment" id="first">some text</span>
 <span class="segment" id="sec">bla bla</span>
</span>

当用户选择某些内容时,我想确定他选择了哪些元素。 例如,如果用户选择了“text bl”,我需要“first”和“sec”元素。

为此,我尝试使用 endContainer.nodeName 但是对于每个选定的文本,我得到父元素“text”。获得子元素是否可行?

var selObj = window.getSelection();
    var selRange = selObj.getRangeAt(0);
    if(selRange!="") {
    var startName = selRange.startContainer.nodeName;
    var endName = selRange.endContainer.nodeName;
    alert(startName+" "+endName);
    }

1 个答案:

答案 0 :(得分:1)

在您的示例中,问题是选择的开始和结束容器节点是文本节点。您可以通过检查nodeType属性

来获取容器元素
var startNode = selRange.startContainer;
if (startNode.nodeType == 3) { // 3 is the node type for text nodes
    startNode = startNode.parentNode;
}

......和最终容器类似。