@Hellas

Как собрать данные в массив?

Есть список тегов:
<div class="selectize-input">
  <div class="item" data-value="тест">тест</div>
  <div class="item" data-value="тест, проверка">тест, проверка</div>
  <div class="item" data-value="проверка (тест)">проверка (тест)</div>
</div>


Необходимо взять значение с каждого item и собрать в массив.
Topics.getTags = function() {
  return ...
};


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

Ранее использовал функцию:
Topics.getTags = function() {
  return $('.tags-input').val().split(", ");
};


И собирал данные с
<input class="tags-input selectized" tabindex="-1" value="тест, тест, проверка, проверка (тест)" style="display: none;">


Но проблема была в том, что темы могут иметь разные символы, например - запятую, которая разделяла тему на несколько значений, если в ней была запятая.
  • Вопрос задан
  • 462 просмотра
Решения вопроса 1
@lemme
Frontend
Topics.getTags = function() {
	const container= document.querySelector('.selectize-input');
  return Array.from(container.children).map(item => item.dataset.value);
};
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@M-ka
frontend присматривающийся к ror
1. т.к. data-value одинаковое с хтмл, то его использовать смысла нет, а контент с дивов выбирать через хтмл или текст
2. переименовать getTags в что то с указанием контента, далее внутри сделать переменную в виде пустого массива, потом ее и вернуть в конце ф-ии, ну и костяком будет обход всех найденных тегов с ".item, .tags-input". В обходе уже в зависимости от общего кода или проверять является елемент инпутом через ноду, если да то брать с value, если нет, то брать с иннерхтмл(текст, кто как любит), после чего проверить длинну взятого контента, если больше 0, запушить к ранее созданному масиву, ну а второй вариант без проверки типа, попытаться взять value, проверить, не вышло, взять через иннерхтмл, не вышло, следующая итерация, ну а когда вышло, пушить в масив. Ну а акцент на то, делать ли проверку из-за того, что вообще может обращаться к этой ф-ии и что может иметь этот класс. Вообщем будет пофиг, собирать с инпутов или дивов контент, главное будет результат....
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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