2010-09-24 72 views
1

选定的文本我有HTML,看起来是这样的:节点名称为在Javascript

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

,当用户选择的东西,我要确定他已经选择的元素。 例如,如果用户选择了“文本bl”,我需要“第一个”和“第二个”元素。

为此,我尝试使用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

在你的例子中,问题是选择的开始和结束容器节点是文本节点。您可以通过检查nodeType属性来获取容器中的元素:

var startNode = selRange.startContainer; 
if (startNode.nodeType == 3) { // 3 is the node type for text nodes 
    startNode = startNode.parentNode; 
} 

...并为成品容器相似。