我的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);
}
答案 0 :(得分:1)
在您的示例中,问题是选择的开始和结束容器节点是文本节点。您可以通过检查nodeType
属性
var startNode = selRange.startContainer;
if (startNode.nodeType == 3) { // 3 is the node type for text nodes
startNode = startNode.parentNode;
}
......和最终容器类似。