Если у человека есть текстовое поле с размером tab размером 2 пробела, например:

<textarea id="source">
function add(a,b,c) {
  return a+b+c;
}
</textarea>

Результат должен быть:

<textarea id="source">
function add(a,b,c) {
    return a+b+c;
}
</textarea>

Есть ли способ преобразовать его из 2 пробелов в 4 пробела?

Я пробую это:

function convert(id,start,end) {
  var myvalue = document.getElementById(id).value;
  var myregex = new RegExp(" "*start,"g");
  myvalue = myvalue.replace(myregex, " "*end);
}
<textarea id="source">
function add(a,b,c) {
  return a+b+c;
}
</textarea>
<button onclick="convert('source',2,4)">Convert Tab Size 2 => 4</button>

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

0
Someone_who_likes_SE 3 Май 2021 в 00:26

1 ответ

Лучший ответ

В javascript нельзя умножать строки. вы можете, например, использовать .repeat (). и вы не вернули значение в элемент. просто изменение myvalue не работает, вам нужно установить значение элемента на myvalue

function convert(id,start,end) {
  var myvalue = document.getElementById(id).value;
  var myregex = new RegExp(" ".repeat(start),"g");
  myvalue = myvalue.replace(myregex, "  ".repeat(end));
  document.getElementById(id).value = myvalue

}
<textarea id="source">
function add(a,b,c) {
  return a+b+c;
}
</textarea>
<button onclick="convert('source',2,4)">Convert Tab Size 2 => 4</button>
1
Tony Zhang 2 Май 2021 в 21:42