Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить атрибут data и подставить в span (https://javascript.ru/forum/misc/82476-poluchit-atribut-data-i-podstavit-v-span.html)

repz 13.05.2021 17:45

Получить атрибут 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;


Ни в какую не хочет.

Спасибо.

рони 13.05.2021 17:50

repz,
укажите какой именно элемент в списке вам нужен!!! сотни людей до вас совершили эту ошибку, попробуйте добавить индекс самостоятельно.

repz 13.05.2021 17:54

3 Span я добавил для наглядности.
я не могу по коду js даже для 1 элемента прочитать data-content.
https://jsfiddle.net/a1gcyue8/

рони 13.05.2021 17:58

Цитата:

Сообщение от repz
я не могу по коду js даже для 1 элемента прочитать data-content.

укажите класс нужного элемента!!!
читать про селекторы css!!!

рони 13.05.2021 18:00

repz,
https://learn.javascript.ru/css-selectors

repz 13.05.2021 18:07

Не совсем понял про селекторы. Сообщение набирал - ошибся, поправил в 1.

рони 13.05.2021 18:15

Цитата:

Сообщение от repz
Не совсем понял про селекторы.

переходим по ссылке выше
абзац Основные виды селекторов
читаем ...
.class – элементы с таким классом.

рони 13.05.2021 18:18

repz,
для кода в пункте 1 нужен цикл,
а для кода в песочнице не хватает одного символа

repz 14.05.2021 07:58

Как-то так:
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);
	  }


Надеюсь все так)

Спасибо за наводки.

рони 14.05.2021 08:41

Цитата:

Сообщение от repz
Надеюсь все так)

чуть проще через elems.forEach и elem.dataset и elem.insertAdjacentHTML

рони 14.05.2021 08:51

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>

repz 14.05.2021 08:51

Сделал так, для того, что бы вставить после <span>
elems[i].insertAdjacentElement('afterend', p);


Спасибо, пока такой синтаксис сложноват для меня)
В моих условиях "DOMContentLoaded" не отрабатывает .

рони 14.05.2021 09:04

Цитата:

Сообщение от repz
"DOMContentLoaded" не отрабатывает .

ставьте скрипт без DOMContentLoaded, внизу страницы.

repz 14.05.2021 09:06

Делаю по аналогии с тем, что есть, поэтому пишу в шапку и делаю settimeout.

Использовал ваш пример, вместо значения выводит ${content}, при этом на jsfiddle все норм.

И еще вопрос, если в селекторе надо например несколько классов, т.е. не
document.querySelectorAll(".class.class2");


а например:
document.querySelectorAll(".class || .class2");

рони 14.05.2021 09:17

Цитата:

Сообщение от repz
выводит ${content}

кавычки !!! ищите на своей клавиатуре ))) у меня там где Ё

repz 14.05.2021 09:23

Цитата:

Сообщение от рони (Сообщение 536595)
кавычки !!! ищите на своей клавиатуре ))) у меня там где Ё

Кавычки я сразу поправил)) иначе бы не завелся совсем.

const elems = document.querySelectorAll(".badge");
            elems.forEach(elem => {
                const { content } = elem.dataset;
             elem.insertAdjacentHTML("afterend", '<p>${content}</p>')
            });


Вот и ответ кстати в селекторе ИЛИ
document.querySelectorAll("class, class2");

repz 14.05.2021 11:36

Цитата:

Сообщение от рони (Сообщение 536595)
кавычки !!! ищите на своей клавиатуре ))) у меня там где Ё

Да) стояли `` редактор не смог распознать стиль форматирования, подумал ошибка) и поставил ' '.

Все работает.
Спасибо еще раз.


Часовой пояс GMT +3, время: 05:43.