0

同じインデックスのテキストを置き換える方法。このテキストは同じパターンを持っている可能性があります。次のテキストの太字の「is」を置き換えたいとします。

「サム男の子で、ドリーは彼の妹ですが、ジョン彼の父親です。彼は医者ではありません。」

次のコードを使用すると、イタリック体の「is」である最初のパターンが置き換えられます。

function getSelectedHTMLText() {
    if (window.getSelection) {  // all browsers, except IE before version 9 contents
    var range = window.getSelection ();
    var container = document.createElement("div");
    for (var i = 0, len = range.rangeCount; i < len; ++i) {
        container.appendChild(range.getRangeAt(i).cloneContents());
    }
            html = container.innerHTML;
            return html;
    } 
    else {
        if (document.selection.createRange) { // Internet Explorer
            var range = document.selection.createRange();
            html = range.htmlText;
            return html;
        }
    }
}

var txt = "Sam is a boy and Dory is his sister, but John <b>is</b> his father. He isn't a doctor.";

var htmlText = getSelectedHTMLText(); //This return s

var txtModified = txt.replace(htmlText, "is");

注:このコードを使用して、HTML コードを HTML 以外のコードに置き換えたり、その逆を行ったりします。

4

1 に答える 1

1

あなたの質問への答えは、ティム・ダウンによってここで答えられました. 実際のコードと非常によく似ています。

http://jsfiddle.net/DggQL/を実証するためにフィドルを作成しました。あなたの場合でも機能しています。

これがコードです

/* taken from https://stackoverflow.com/a/3997896*/
function replaceSelectedText(replacementText) {
    var sel, range;
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.rangeCount) {
            range = sel.getRangeAt(0);
            range.deleteContents();
            range.insertNode(document.createTextNode(replacementText));
        }
    } else if (document.selection && document.selection.createRange) {
        range = document.selection.createRange();
        range.text = replacementText;
   }
}
于 2013-02-02T21:44:32.670 に答える