2010-09-24 126 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; 
} 

...併爲成品容器相似。