2013-08-10 41 views
7

Đối với đoạn mã sau:Lỗi Loại: abc.getAttribute không phải là một chức năng

<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); 

Tôi nhận được thông báo lỗi: TypeError: abc.getAttribute is not a function. Tôi đã làm gì sai?

+2

Hãy thử abc.attr(), tôi không chắc liệu tham chiếu: đầu tiên sẽ chính xác. Tôi nghĩ rằng bạn tốt hơn có cả hai span wihin một div. – INgeek

+1

Có thể là lỗi đánh máy, nhưng nhịp của bạn có thuộc tính data-lng, không phải thuộc tính data-lat – guero64

Trả lời

18

Hãy thử điều này có thể là:

var abc = $('.map-marker:first')[0]; 
    var xyz = abc.getAttribute("data-lat"); 
    console.log(xyz); 

Hoặc này:

var abc = $('.map-marker:first'); 
    var xyz = abc.data("lat"); 
    console.log(xyz); 
2

Bạn đang chọn nhiều phần tử. Hàm select trả về một mảng và mảng không có hàm getAttribute. Bạn có thể sử dụng vòng lặp for để lặp qua việc lựa chọn và nhận các giá trị thuộc tính, hoặc bạn có thể sử dụng một trình chỉ mục ([0], ví dụ) để lấy thuộc tính của một cụ thể.

+0

* "Bạn đang chọn nhiều phần tử." * Thực tế là không. Bộ chọn giả ': first' làm giảm tập hợp thành một phần tử. * "Hàm chọn trả về một mảng" * Không, nó trả về một đối tượng jQuery. * "và lỗi không có hàm getAttribute" * Uh? Đối tượng jQuery (hoặc mảng) không có phương thức 'getAttribute', đúng là –

+0

Rất tiếc, lỗi chính tả. Tôi có nghĩa là mảng thay vì lỗi. –

+0

Cảm ơn bạn đã cảnh báo. Tôi mới vào jQuery, do đó, loại giả định vì kết quả của một lựa chọn $() là số nguyên chỉ mục và có chiều dài và như vậy, nó là một mảng. http://learn.jquery.com/using-jquery-core/jquery-object/ cho tôi biết là không. Nhưng một đối tượng jQuery có thực hiện tất cả các phương thức của một mảng không? Tôi không thể tìm thấy nó trong tài liệu. –

14

abc là một đối tượng jQuery, vì vậy nó không có chức năng getAttribute(). nó có chức năng attr().

8

What have I done wrong?

Bạn xử lý một đối tượng jQuery như một yếu tố DOM. Đối tượng jQuery không có phương thức getAttribute. Bạn có thể sử dụng .attr hoặc .data để thay thế.

3

Bạn đang cố gắng nhận "dữ liệu-lat" nhưng bạn chỉ xác định "data-lng".

Các vấn đề liên quan