2010-09-22 27 views
18

aralığını seçin contenteditable div ve bunun içinde birkaç paragraf var.Kapsamlı dilde

İşte benim kod:

<!DOCTYPE HTML> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    </head> 
    <body> 
     <div id="main" contenteditable="true" 
      style="border:solid 1px black; width:300px; height:300px"> 
      <div>Hello world!</div> 
      <div> 
       <br> 
      </div> 
      <div>This is a paragraph</div> 
     </div> 
    </body> 
</html> 

varsayarsak, ben dize içerecek bir aralık seçimini yapmak istiyorum "! Dünyayı budur"

Bu nasıl yapmalı?

cevap

36

Vurgulu olmasını istediğiniz metni içeren metin düğümlerini bir kez tuttuktan sonra, kolay. Bunları nasıl aldığın, bunun ne kadar genel bir şeye ihtiyacın olduğuna bağlı. şu anda olduğu gibi kullanıcı düzenleseniz önce, aşağıdaki çalışır:

var mainDiv = document.getElementById("main"); 
var startNode = mainDiv.firstChild.firstChild; 
var endNode = mainDiv.childNodes[2].firstChild; 

var range = document.createRange(); 
range.setStart(startNode, 6); // 6 is the offset of "world" within "Hello world" 
range.setEnd(endNode, 7); // 7 is the length of "this is" 
var sel = window.getSelection(); 
sel.removeAllRanges(); 
sel.addRange(range); 
+0

'ardından removeAllRanges' ve' addRange' benim durum için eksikti parçalar vardı. Kod için teşekkürler! – siannopollo

İlgili konular