TypeError: abc.getAttribute не является функцией

Для следующего кода:

  <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. Что я сделал неправильно?

Ответ 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);

Ответ 2

abc - объект jQuery, поэтому он не имеет функции getAttribute(). он имеет функцию attr().

Ответ 3

Что я сделал неправильно?

Вы обработали объект jQuery, как элемент DOM. Объекты jQuery не имеют метода getAttribute. Вы можете использовать .attr или .data вместо.

Ответ 4

Ваша попытка получить "data-lat", но у вас есть только "data-lng".

Ответ 5

Вы выбираете несколько элементов. Функция select возвращает массив, и массив не имеет функции getAttribute. Вы можете использовать цикл for для итерации по выбору и получения значений атрибутов, или вы можете использовать индекс (например, [0]), чтобы получить атрибут определенного.

Ответ 6

Просто попал в эту проблему. Согласитесь с @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>

Ответ 7

Следите за доступом к this в обработчике событий с динамической областью действия.

Вызов функции на this, что не существует может привести к node.getAttribute is not a function.