2016-08-15 4 views
0

Я создаю текстовый редактор для своего сайта, и мне нужна функция find-and-replace, которая находит каждый раз, когда текст возникает, выделяет его и, если пользователь выбирает, заменяет его. Затем он переходит на следующее вхождение и делает то же самое. Я видел этот код:Найти и заменить итерацию с помощью javascript

var haystackText = ""; 
function findMyText(needle, replacement) { 
    if (haystackText.length == 0) { 
      haystackText = document.getElementById("haystack").innerHTML; 
    } 
    var match = new RegExp(needle, "ig");  
    var replaced = ""; 
    if (replacement.length > 0) { 
      replaced = haystackText.replace(match, replacement); 
    } 
    else { 
      var boldText = "<div style=\"background-color: yellow; display: inline; font-weight: bold;\">" + needle + "</div>"; 
      replaced = haystackText.replace(match, boldText); 
    } 
    document.getElementById("haystack").innerHTML = replaced; 
} 

, но он работает только с DIV, который имеет текст его, а не текстовое поле, как у меня, а также, он находит и/или заменяет все вхождения сразу, вместо того, чтобы повторять их один за другим.

Как это сделать?

ответ

0

Если код работает с тегом <Div>, то u должен работать с тегом div. просто сделайте этот тег div редактируемым.

Попробуйте это:

<div contenteditable="true">This is an editable div</div> 

contenteditable атрибут определяет, является ли редактируемым содержанием элемента или нет.

+0

Я использую texarea, и я бы хотел использовать свойства 'selectionStart' и' selectionEnd'. – TricksfortheWeb

Смежные вопросы