2017-09-17 25 views
0

以下の関数は、キャレットを先頭に戻します。関数が呼び出された後も、どうやって同じ場所に置くことができますか?contenteditable:キャレット位置の保存と復元

function highlightText() { 
      var mystring = document.getElementById("writeArea").textContent; 
      mystring = mystring.replace(/function/g , "<span class=\"func\">function</span>"); 
      document.getElementById("writeArea").innerHTML = mystring; 
     } 

のcontentEditable宣言:

<div class="codeArea" id="writeArea" contenteditable="true"> <p> edit me! </p> </div> 

答えて

0

利用selectionStartキャレットの位置を取得して設定するには:

noobの質問申し訳ありません

document.getElementById("writeArea").onkeyup = highlightText(this); 
 
function highlightText(o) { 
 
    var mystring = document.getElementById("writeArea").textContent, 
 
    caretPosition = o.selectionStart; 
 
    mystring = mystring.replace(/function/g , "<span class=\"func\">function</span>"); 
 
    document.getElementById("writeArea").innerHTML = mystring; 
 
    document.getElementById("writeArea").selectionStart = caretPosition; 
 
}
<div class="codeArea" id="writeArea" contenteditable="true"> <p> edit me! </p> </div>

+0

が、何午前私はoのために置くと思いますか? Googleクロムで「Uncaught TypeError:未定義のselectionStartプロパティを読み取れません」というエラーが表示されました。 –

+0

あなたのcontentedi divのドキュメントオブジェクトへの参照 –

関連する問題