Ответ 1
Попробуйте это:
var abc = $('.map-marker:first')[0];
var xyz = abc.getAttribute("data-lat");
console.log(xyz);
Или это:
var abc = $('.map-marker:first');
var xyz = abc.data("lat");
console.log(xyz);
Для следующего кода:
<span class="map-marker" data-lng="101.7113506794"></span>
<span class="map-marker" data-lng="101.6311097146"></span>
var abc = $('.map-marker:first');
var xyz = abc.getAttribute("data-lat");
console.log(xyz);
Я получаю сообщение об ошибке: TypeError: abc.getAttribute is not a function
. Что я сделал неправильно?
Попробуйте это:
var abc = $('.map-marker:first')[0];
var xyz = abc.getAttribute("data-lat");
console.log(xyz);
Или это:
var abc = $('.map-marker:first');
var xyz = abc.data("lat");
console.log(xyz);
abc
- объект jQuery, поэтому он не имеет функции getAttribute()
. он имеет функцию attr()
.
Что я сделал неправильно?
Вы обработали объект jQuery, как элемент DOM. Объекты jQuery не имеют метода getAttribute
. Вы можете использовать .attr
или .data
вместо.
Ваша попытка получить "data-lat", но у вас есть только "data-lng".
Вы выбираете несколько элементов. Функция select возвращает массив, и массив не имеет функции getAttribute. Вы можете использовать цикл for для итерации по выбору и получения значений атрибутов, или вы можете использовать индекс (например, [0]), чтобы получить атрибут определенного.
Просто попал в эту проблему. Согласитесь с @Felix Kling Попробуйте ниже:
<span class="map-marker" data-lng="101.7113506794"></span>
<span class="map-marker" data-lng="101.6311097146"></span>
<script>
var abc = $('.map-marker:first');
var xyz = $(abc).attr("data-lng");
console.log(xyz);
</script>
Следите за доступом к this
в обработчике событий с динамической областью действия.
Вызов функции на this
, что не существует может привести к node.getAttribute is not a function
.