Задать вопрос
MrNix21
@MrNix21

Как перебрать все элементы с одним классом, выбрать у них тексты и добавить в одну переменную через запятую?

Здравствуйте! Как в jQuery перебрать все элементы с одним классом, выбрать у них тексты и добавить в одну переменную через запятую?
Например, есть такая структура:
<td class="model">456</td>
<td class="model">443</td>
<td class="model">12</td>

Мне надо перебрать все эти элементы с классом model и добавить в одну переменную тексты через запятую:
var models = "456,443,12";
Далее я хочу это сохранить в куки:
document.cookie = "models ="+models+"; path=/";
Я пытаюсь это сделать так, но не работает:
$('body').on('click','#button-confirm',function(){
var models = '';
$("td.model").each(function(){
models = $(this).html() + ',';
console.log(models);
document.cookie = "models="+models+"; path=/"; // библиотека для сохранения в куки
});
});

Как это сделать по другому?
  • Вопрос задан
  • 151 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
О каком классе идёт речь: const className = 'model';

Как получить элементы:

const elements = document.querySelectorAll(`.${className}`);
// или
const elements = document.getElementsByClassName(className);

Как извлечь из элемента его текст:

const getText = el => el.textContent;
// или
const getText = el => el.innerText;
// или (т.к. вложенных элементов нет, это тоже сработает как надо)
const getText = el => el.innerHTML;

Перебираем элементы, достаём тексты, склеиваем:

const result = Array.from(elements, getText).join(', ');

// или

const result = ''.concat(...[...elements].flatMap((n, i) => (
  n = getText(n),
  i ? [ ', ', n ] : n
)));

// или

const result = Array.prototype.reduce.call(
  elements,
  (acc, n, i) => acc + (i ? ', ' : '') + getText(n),
  ''
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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