2017-03-02 13 views
0

私はhtml()メソッドを使用してバックスペース機能を実装しようとしていますが、私の場合は許可されていない要素の範囲オブジェクトをリセットします。範囲オブジェクトから現在のノード参照を取得する方法

残念ながら、ノードが複数ある場合、予想通りに動作しません。範囲オブジェクトから現在のノード参照を取得できる方法はありますか?

これは私が試したコードです。次の代わりに、上記の行を追加し

<div id="myDiv" style="color:red" contenteditable="true">The color of this text is red.<br>yellow</div> 
     <br /><br /> 
     <button id='two'>Backspace</button> 

//javascript 

$('#two').click(function() 
{ 
    var div = document.getElementById ("myDiv"); 
    var doc = div.ownerDocument || div.document; 
    var win = doc.defaultView || doc.parentWindow; 
    var sel = win.getSelection(); 
    var range = sel.getRangeAt(0); 
    if (document.createRange) 
    {  // all browsers, except IE before version 9 
    var textNode = div.firstChild;  // the text node inside the div 
    if (textNode.data.length > 1) 
    { 
     var rangeObj = document.createRange(); 
     if(range.startOffset> 0) 
     { 
     // aligns the range to the second character 
     rangeObj.setStart (textNode, range.startOffset-1); 
     rangeObj.setEnd (textNode, range.startOffset); 
     } 

     rangeObj.deleteContents(); 
    } 
    } 

}); 

答えて

0
rangeObj.setStart (textNode, range.startOffset-1); 
     rangeObj.setEnd (textNode, range.startOffset); 

は私の問題を修正しました。

rangeObj.setStart (range.startContainer, range.startOffset-1); 
    rangeObj.setEnd (range.startContainer, range.startOffset); 
関連する問題