@Shimpanze

Почему после обработки возвращается тройное содержимое?

Добрый день!

Адаптирую функцию, которая выполняет замену в выделенном фрагменте.

function add_left_2_indent() {
  var div = document.querySelector('.entry-content');

  var selStart = div.selectionStart,
        selEnd = div.selectionEnd;

  var slection = div.innerHTML.substring(selStart, selEnd);

  if (slection) {
    var replaced = slection.replace(/^([^\r\n][\s\S]*?)$/gm, "  $1");
    div.innerHTML = div.innerHTML.substring(0, selStart) + replaced + txval.substring(selEnd, txval.length);
    selEnd = selStart + replaced.length;
  }

  div.setSelectionRange(selStart, selEnd);
}


После применения этой функции, мы имеем, не замену в выделенном фрагменте, а содержимое помноженное на три.

Как это исправить?

P.S. У контейнера прописан contenteditable="true"
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
@vaajnur
битриксоид
удали этот говнокод нафиг и возьми это
function add_left_2_indent(div) {
  var div = document.querySelector('.entry-content');

  var text = div.innerHTML

  selection = window.getSelection();
  var substr1 = selection.toString()

  var newstr =   text.replace(substr1  , '123' )

    div.innerHTML = newstr
}

 var div = document.querySelector('.entry-content');
 div.addEventListener('click' , function(){
    add_left_2_indent()
 })
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы