Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вывести данные JSON в аттрибут data-* (https://javascript.ru/forum/misc/74802-kak-vyvesti-dannye-json-v-attribut-data-%2A.html)

wintersoft 08.08.2018 18:37

Как вывести данные JSON в аттрибут data-*
 
Есть загнанные в локальное хранилище данные (таблица):
$(function() {
$('#but2').click(function() {
var jsonArr = [];
var obj = {};
var thNum = document.getElementsByTagName('th').length;
var arrLength = document.getElementsByTagName('td').length;
for (i = 0; i < arrLength; i++) {
if (i % thNum === 0) {
obj = {};
}
var head = document.getElementsByTagName('th')[i % thNum].innerHTML;
var content = document.getElementsByTagName('td')[i].innerHTML;
obj[head] = content;
if (i % thNum === 0) {
jsonArr.push(obj);
}
}
document.write("<br>" + JSON.stringify(jsonArr));
localStorage.setItem('myStorage', JSON.stringify(jsonArr));
});
});

Нужно вывести данные из хранилища в аттрибут data-name:

<button class="good-item__btn-add btn btn-info btn-sm js-add-to-cart"
data-id="11"
data-name="сюда вывести данные"
data-price="1500">
Добавить в корзину
</button>

Пробую нечто подобное:
$(function(){
$('#12345').click(function() {
$( "#123456" ).attr({
data-name: "Beijing Brush Seller"
});
});
});
Поставить заранее заданный текст получается, но никак не могу понять каким образом вывести именно таблицу из локального хранилища (желательно в приемлемом виде)....

Прошу помогите!

Aetae 08.08.2018 18:54

$( "#id" ).attr({
  'data-name': localStorage.getItem('myStorage')
});
Очевидно же, даже если вы вообще не умеете программировать, чисто из контекста.

Dilettante_Pro 08.08.2018 18:58

<button class="good-item__btn-add btn btn-info btn-sm js-add-to-cart" data-id="b11" data-name="сюда вывести данные" data-price="1500">Добавить в корзину</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<script>
var arr = [{'head':'nn'},{'head':'name'},{'head':'age'}];
$('.btn').data('name',arr);
alert(JSON.stringify($('.btn').data('name')));
</script>

Aetae 08.08.2018 19:24

Dilettante_Pro, jquery .data не пишет в атрибут data, "бай дезижн". Вот такие чудеса.

laimas 08.08.2018 20:50

Цитата:

Сообщение от Aetae
Вот такие чудеса

Не чудеса, data, это объект связанный с элементом.

Aetae 08.08.2018 21:31

laimas, я знаю что это и как это сделано. А вот с какого хрена так контринтуитивно сделано в jquery - вопрос. Единственный плюс - возможность привязывать объекты, но с этим и .prop бы справилось.
И да, факт в том, что .data - не ответ на вопрос wintersoft.

laimas 08.08.2018 22:32

Цитата:

Сообщение от Aetae
А вот с какого хрена так контринтуитивно сделано в jquery - вопрос.

Вот этого я не знаю )

Dilettante_Pro 09.08.2018 10:15

Цитата:

Сообщение от Aetae
jquery .data не пишет в атрибут data

Увы, я в курсе. Именно поэтому вывел результат через
alert(JSON.stringify($('.btn').data('name')));

- показать, что вообще-то оно записалось, и может быть доступно.
Просто как альтернатива.


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