4

私はあなたに私の「問題」を説明しようとします。テキストの一部を選択したときに、このテキストが html タグで「ラップ」されているかどうかを知りたいのですが、関数でそれらを削除します。

たとえば、次の文を使用します。

車は<strong></strong>、船は黒

「緑」を選択してボタンをクリックすると、緑がラップされているかどうかを確認し<strong>(それで問題ありません)、関数で<strong>「緑」を含む削除せずにタグを削除します。

やろうとしましたが、子を削除して再作成すると、新しいノードが空になり、直接テキストを入れようとするとdocument.createTextNode、新しいノードが表示されますが、<strong>タグは残ります。

// Bouton CLICK
    $('input[type=button].btn_transform').click(function(){

var selObj = window.getSelection();    
        var parent=selObj.anchorNode.parentNode;

        if (parent.nodeName=='STRONG'){       
           parent.removeChild(selObj.anchorNode);
            var theText = document.createTextNode(selObj);
            parent.appendChild(theText);             
        }
    });

私は DOM 操作の専門家ではありません。これを解決するのを手伝ってもらえますか?

貴重なご支援をいただき、誠にありがとうございます。

4

3 に答える 3

1

どのブラウザでも情報を選択する選択方法については、この投稿をチェックしてください。

要素内のテキストの選択(マウスでの強調表示に似ています)

SelectTextメソッドを使用する場合は、getSelection()の代わりに正常に機能するはずです。

それが役に立てば幸い。

于 2010-03-19T17:30:21.873 に答える
0

主にjQueryを使用しています...

$(document).ready(function () {
        $("#btn_transform").click(function () {
            var selectedText = getSelText();
            var parentOf = $("strong:contains(" + selectedText + ")");
            $(parentOf).each(function () {
                if (this.tagName == "STRONG" || this.tagName == "strong") {
                    var theElement = $(this);
                    var itsText = $(this).text();
                    $(this).after(itsText);
                    $(this).remove();
                }
            });
        });
    });
    function getSelText(){
       // your chosen 'get selection' method...
    {

唯一の問題は、複数回表示されるテキストを選択した場合です。そのため、関数は<strong>タグ間に含まれるこのテキストのすべてのインスタンスに一致し、それらをすべて削除します。

私は推測しますが、あなたにいくつかのアイデアを与えるかもしれません。ロブ

于 2010-04-19T21:41:37.327 に答える
0

次のように、親の outerHTML ( <strong>green</strong>) をその innerHTML ( green) に設定するだけで、希望どおりに動作するはずです。

$('input[type=button].btn_transform').click(function(){ 

    var selObj = window.getSelection();     
    var parent=selObj.anchorNode.parentNode; 

    if (parent.nodeName=='STRONG'){        
        parent.outerHTML = parent.innerHTML;
    } 
}); 
于 2010-03-18T20:19:51.030 に答える