@MegaPuxapb

Как вытащить for у label?

Динамически создаю option у селекта.
function select_model_iphone() {
   var array = Array.from($('#price_block .change_model_iphone .item label')).map(len => len.innerHTML);
   var select = document.getElementById('select_model');
   select.innerHTML = `${array.map(el => `<option value="${el}">${'iPhone ' + el}</option>`)}`
}

Как вытаскивать значение label for = ' ' у $('#price_block .change_model_iphone .item label')
и помещать в option value = '' ?
  • Вопрос задан
  • 497 просмотров
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
О каких label'ах и каком select'е идёт речь:

const labels = document.querySelectorAll('#price_block .change_model_iphone .item label');
const select = document.querySelector('#select_model');

Как получить for:

const getFor = el => el.getAttribute('for');
// или
const getFor = el => el.attributes.for.value;
// или
const getFor = el => el.htmlFor;

Заполняем select option'ами:

// можно перезаписать разметку
select.innerHTML = Array
  .from(labels, n => `<option value="${getFor(n)}">iPhone ${n.innerText}</option>`)
  .join('');

// или, напрямую создавать новые элементы
select.append(...Array.prototype.map.call(
  labels,
  n => new Option(`iPhone ${n.textContent}`, getFor(n))
));
Ответ написан
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
var item = $('#price_block .change_model_iphone .item label');
var for = item.attr('for');
console.log(for);
Ответ написан
Комментировать
@kudis
Bitrix developer
На чистом js для первого найденного элемента:
document.querySelectorAll('#price_block .change_model_iphone .item label')[0].getAttribute('for')

для всех, подходящих под селектор
document.querySelectorAll('#price_block .change_model_iphone .item label').forEach((item) => console.log(item.getAttribute('for')));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект