1

私は次のような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);
    }
4

1 に答える 1

1

あなたの例では、問題は、選択の開始コンテナノードと終了コンテナノードがテキストノードであるということです。nodeTypeプロパティを確認することで、コンテナ要素を取得できます。

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

...そしてエンドコンテナについても同様です。

于 2010-09-24T13:22:22.423 に答える