2013-02-02 21 views
0

如何替換相同索引處的文本。本文可能有相同的模式。假設我想在下一個文本中替換粗體「是」。如何用JavaScript替換同一索引處的文本?

「薩姆一個男孩和多莉是他的妹妹,但約翰他的父親,他不是醫生。」

當我使用下面的代碼時,它將替換斜體「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"); 

注:我使用此代碼替換爲none-HTML代碼的HTML代碼,反之亦然

+0

準備的jsfiddle例子。幫助你會容易得多。 「 – Eru

+0

」'替換粗體「是」'「,用什麼替換」大膽是「?刪除圍繞「is」的'b'標籤? – Teemu

+0

我自己是使用本機JS的忠實粉絲,但是在這種情況下,沒有任何理由不使用jQuery? – contactmatt

回答

1

回答你的問題是由Tim向下回答here。實際上看起來與您的代碼非常相似。

我做了一個小提琴演示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; 
    } 
} 
+0

感謝gert vaartjes這看起來很有幫助。我明天會試試,因爲我再也看不到了。感謝您和@TimDown。 –

相關問題