Получить атрибут data и подставить в span
Добрый день.
Столкнулся с непониманием)) Пытаюсь выдернуть data-content из <span class="badge" data-content="Иванов"><i class="fa fa-gavel"></i> </span> <span class="badge" data-content="Петров"><i class="fa fa-gavel"></i> </span> <span class="badge" data-content="Сидоров"><i class="fa fa-gavel"></i> </span> и вставить его в этот же span. Делал так
let bt = Document.getElementsByClassName(".badge");
let data = bt.getAttribute("data-content");
и так
let bt = Document.getElementsByClassName(".badge");
bt.dataset.content;
Ни в какую не хочет. Спасибо. |
repz,
укажите какой именно элемент в списке вам нужен!!! сотни людей до вас совершили эту ошибку, попробуйте добавить индекс самостоятельно. |
3 Span я добавил для наглядности.
я не могу по коду js даже для 1 элемента прочитать data-content. https://jsfiddle.net/a1gcyue8/ |
Цитата:
читать про селекторы css!!! |
|
Не совсем понял про селекторы. Сообщение набирал - ошибся, поправил в 1.
|
Цитата:
абзац Основные виды селекторов читаем ... .class – элементы с таким классом. |
repz,
для кода в пункте 1 нужен цикл, а для кода в песочнице не хватает одного символа |
Как-то так:
var elems = document.querySelectorAll(".badge");
for( let i = 0; i < elems.length; i++){
let dc = elems[i].getAttribute("data-content");
console.log(dc);
}
Вот полный код:
var elems = document.querySelectorAll(".badge");
for( let i = 0; i < elems.length; i++){
var dc = elems[i].getAttribute("data-content");
var p = document.createElement("p");
var text = document.createTextNode(dc);
p.appendChild(text);
elems[i].appendChild(p);
}
Надеюсь все так) Спасибо за наводки. |
Цитата:
|
repz,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
document.addEventListener("DOMContentLoaded", () => {
const elems = document.querySelectorAll(".badge");
elems.forEach(elem => {
const { content } = elem.dataset;
elem.insertAdjacentHTML("afterend", `<p>${content}</p>`)
})
});
</script>
</head>
<body>
<span class="badge" data-content="Иванов"><i class="fa fa-gavel"></i> </span>
<span class="badge" data-content="Петров"><i class="fa fa-gavel"></i> </span>
<span class="badge" data-content="Сидоров"><i class="fa fa-gavel"></i> </span>
</body>
</html>
|
Сделал так, для того, что бы вставить после <span>
elems[i].insertAdjacentElement('afterend', p);
Спасибо, пока такой синтаксис сложноват для меня) В моих условиях "DOMContentLoaded" не отрабатывает . |
Цитата:
|
Делаю по аналогии с тем, что есть, поэтому пишу в шапку и делаю settimeout.
Использовал ваш пример, вместо значения выводит ${content}, при этом на jsfiddle все норм. И еще вопрос, если в селекторе надо например несколько классов, т.е. не
document.querySelectorAll(".class.class2");
а например:
document.querySelectorAll(".class || .class2");
|
Цитата:
|
Цитата:
const elems = document.querySelectorAll(".badge");
elems.forEach(elem => {
const { content } = elem.dataset;
elem.insertAdjacentHTML("afterend", '<p>${content}</p>')
});
Вот и ответ кстати в селекторе ИЛИ
document.querySelectorAll("class, class2");
|
Цитата:
Все работает. Спасибо еще раз. |
| Часовой пояс GMT +3, время: 15:32. |