Вернуть данные attr в javascript

Этот код возвращает все элементы li в html-коде. Например:

<li data = "2" class = "produkt_w_koszyku"><b>Audi A6</b> <span class = "cena_w_koszyku">199000 zł</span><span style = "float: right; margin-right: 30px;" class = "deleteitembasket"><i class = "fas fa-times"></i></span></li><li data = "3" class = "produkt_w_koszyku"><b>BMW i8</b> <span class = "cena_w_koszyku">122 zł</span><span style = "float: right; margin-right: 30px;" class = "deleteitembasket"><i class = "fas fa-times"></i></span></li>

Я бы хотел, чтобы он вернул мне значение атрибута данных. итак: 2, 3. Как я могу это изменить?

var $ul = $(this).parents('ul');
localStorage.setItem('item_id', $ul.html());
$(this).attr('data')?
Get Off My Lawn 06.07.2018 17:12

просто старый добрый data может быть зарезервированным словом. Измените его на data-test и используйте метод jquery .data()

bassxzero 06.07.2018 17:12

Хорошо, но если таких элементов несколько, то я бы хотел, чтобы данные attr были записаны после десятичной точки. например: 1,2

J. Ga 06.07.2018 17:14

@ J.Ga Вы должны отредактировать свой вопрос, чтобы дать четкий пример того, что вы хотите.

zfrisch 06.07.2018 17:16

Я отредактировал свой пост.

J. Ga 06.07.2018 17:18
$("li.produkt_w_koszyku").map(function(){ return this.getAttribute('data'); }).get().join(',')
Taplar 06.07.2018 17:18

Спасибо. ^ это работает

J. Ga 06.07.2018 17:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
49
3

Ответы 3

Вам необходимо добавить элементы хранения данных с данными, например data-data, data-class, data -..., как показано ниже.

<article
  id = "electriccars"
  data-columns = "3"
  data-index-number = "12314"
  data-parent = "cars">
...
</article>

Считать значения этих атрибутов в JavaScript также очень просто. Вы можете использовать getAttribute () с их полным HTML-именем для их чтения, но стандарт определяет более простой способ: DOMStringMap, который вы можете считывать через свойство набора данных.

Чтобы получить атрибут данных через объект набора данных, получите свойство по части имени атрибута после data- (обратите внимание, что тире преобразуются в camelCase).

var article = document.getElementById('electriccars');

article.dataset.columns // "3"
article.dataset.indexNumber // "12314"
article.dataset.parent // "cars"
$("li.produkt_w_koszyku").map(function(){ return this.getAttribute('data'); }).get().join(',')

Выделите все элементы, сопоставьте части, которые вы хотите, в массиве и соедините их через запятую. Вы можете использовать getAttribute(), чтобы получить атрибут из элемента DOM.

Вы хотите перебрать элементы li и извлечь значение атрибута данных. Комментарии выше предоставляют то, что вам нужно, но резюмируют:

// you may need a more specific selector, but this works for your html snippet
const dataAttrs = $("li").map(function(){ 
  return $(this).attr('data'); 
}).get().join(',');

// display your data
console.info(dataAttrs);

Кроме того, лучше следовать общепринятому мнению об атрибутах data-*, а не использовать просто data для выполнения чего-то вроде data-id, data-data или чего-то еще. См. https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes.

Другие вопросы по теме