@sequelone

Как из цикла for записать данные в textarea?

При добавлении списка ссылок в textarea, где каждая ссылка записана в отдельную строку:


google.com
www.google.com
ftp://ftp.google.com
www.google.com
www.google.com
https://www.google.com/
https://www.google.com.sg/


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

const element = document.getElementById("bulkDomains");

            function parseUrl(e) {
                let domains = element.value.split('\n');
                const re = /(?:[\w-]+\..)+[\w-]+/g;

                for (let i = 0, ln = domains.length; i < ln; ++i) {
                    const domain = re.exec(domains[i]);

                    element.value = domain[0] + '\n';

                    console.log(domain[0]);
                }

            }

            element.addEventListener('change', parseUrl);


Вставляется в textarea только последний обработанный домен, остальные домены не вставляются. Как из цикла for вставить обработанные домены обратно в textarea?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
@sequelone Автор вопроса
Разобрался с очисткой textarea:

function parseUrls(e) {
                let domains = element.value.split('\n');
                const re = /(?:[\w-]+\..)+[\w-]+/g;

                element.value = "";

                for (let i = 0, ln = domains.length; i < ln; ++i) {
                    element.value += re.exec(domains[i]) + '\n';
                    re.exec(domains[i]);
                }

            }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@nagge101
element.value = domain[0] + '\n';

Этим выражением вы перезаписываете каждую итерацию.
А вам надо дописывать, соотвественно:

function parseUrl(e) {
                let domains = element.value.split('\n');
                const re = /(?:[\w-]+\..)+[\w-]+/g;

                for (let i = 0, ln = domains.length; i < ln; ++i) {
                    const domain = re.exec(domains[i]);

                    element.value += domain[0] + '\n';

                    console.log(domain[0]);
                }

            }
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы