Удалить несколько строк из текстовой области - PullRequest
0 голосов
/ 04 марта 2020

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

Пример

У меня есть следующее в текстовой области;

Australia - Mobile Optus
Australia - Mobile Telstra
Australia - Mobile Vodafone
Australia - Special
Australia - Sydney
Austria

И я хочу удалить линию de 0,3,4

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

Australia - Mobile Telstra
Australia - Mobile Vodafone
Austria

Я думаю, что сначала получим строки

var rows = document.querySelector('textarea').value.split("\n").length

Но я застрял, я не могу понять, как это сделать

: s

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Когда вы применяете разбиение без вызова «length», вы получаете массив, который содержит строки вашей текстовой области, например:

var rows = document.querySelector('textarea').value.split('\n');

console.log(rows)
<textarea id="textarea">
Australia - Mobile Optus
Australia - Mobile Telstra
Australia - Mobile Vodafone
Australia - Special
Australia - Sydney
Austria
</textarea>

Таким образом, для удаления указанных c элементов из массива вы можете использовать прототип соединения

(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)

ex:

array.splice (start, deleteCount)

start: индекс, с которого начинается изменение массива.

deleteCount: целое число, указывающее количество элементов в массиве, которые нужно удалить с начала.

var rows = [
"Australia - Mobile Optus",
"Australia - Mobile Telstra",
"Australia - Mobile Vodafone",
"Australia - Special",
"Australia - Sydney",
"Austria"
]

rows.splice(2,1);
rows.splice(4,1);

console.log(rows)

Я делюсь статьей с различными способами удаления элементов из массива: https://love2dev.com/blog/javascript-remove-from-array/

0 голосов
/ 04 марта 2020

Вы можете использовать Array.prototype.splice(start, count) внутри обратной итерации

function removeLines(EL, arr) {
  arr.sort((a, b) => a - b); // Sort, just in case you messed the order
  const lines = EL.value.trim().split(/\n/);
  for (let i = arr.length - 1; i >= 0; i--) lines.splice(arr[i], 1);
  EL.value = lines.join('\n') 
  return EL.value ;
}

const EL_text = document.querySelector('#text');
const EL_rem = document.querySelector('#rem');

EL_rem.addEventListener('click', () => removeLines(EL_text, [4, 0, 3]));
/*QuickReset*/ * {margin:0; box-sizing: border-box;}

textarea {
  display: block;
  width: 100%;
  min-height: 120px;
}
<button id="rem" type="button">Remove 0,3,4</button>
<textarea id="text">
0 Australia - Mobile Optus
1 Australia - Mobile Telstra
2 Australia - Mobile Vodafone
3 Australia - Special
4 Australia - Sydney
5 Austria
</textarea>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...