我有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);
}发布于 2010-09-24 13:22:22
在您的示例中,问题是选择的开始和结束容器节点是文本节点。您可以通过检查nodeType属性获得容器元素:
var startNode = selRange.startContainer;
if (startNode.nodeType == 3) { // 3 is the node type for text nodes
startNode = startNode.parentNode;
}..。最后的容器也是如此。
https://stackoverflow.com/questions/3787431
复制相似问题