2011-12-16 44 views
12

Tôi muốn biết liệu có cách nào để getElementByClassName("classname").innerHTML chức năng hoặc cái gì đó tương đương với getElementById("ClassName").innerHTML hay không.Cách lấy phần tử theo tên lớp

+0

Điều này sẽ giúp bạn. http://javascript.about.com/library/bldom08.htm Nhưng mẹo nhanh -> Sử dụng Jquery cho điều đó. Nó sẽ dễ dàng hơn. – Fredy31

+1

bản sao có thể có của [Làm thế nào để lấy phần tử theo lớp trong JavaScript?] (Http://stackoverflow.com/questions/3808808/how-to-get-element-by-class-in-javascript) - Tôi cho rằng bạn đang xử lý với JavaScript. –

Trả lời

25

Bạn đang thiếu s trong tên hàm của mình. getElementsByTagName trả về một tập hợp các yếu tố, các yếu tố, mà bạn cần để lặp qua:

var elements = document.getElementsByClassName("classname"); 

for (var i = 0; i < elements.length; i++) { 
    elements[i].innerHTML = 'foo'; 
} 

IE8 và dưới đây không hỗ trợ getElementsByClassName, vì vậy bạn sẽ phải tìm một polyfill hoặc sử dụng querySelectorAll (IE8).

+3

Lưu ý rằng 'getElementsByClassName' không có sẵn trong IE8 trở xuống. –

0

Bạn có thể làm điều này bằng jquery

$('.className').html(); 

http://api.jquery.com/html/

+0

Hey câu trả lời này đã giúp tôi trả lời việc sử dụng phần tử lớp trong js. Có thể không có được rằng có liên quan đến câu hỏi trên, nhưng nó đã giúp tôi để tìm ra vấn đề di chuyển ngang tôi đã có. – DoodleKana

-2

Nếu tou sử dụng jQuery bạn có thể lấy nó như bạn làm trong một selector CSS vậy:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script> 

sau đó ...

$('.classname').each(function() { 
    // get html 
    $(this).html(); 
    // set html 
    $(this).html('something'); 
}); 

Lưu ý rằng bạn cũng có cách thuận tiện để quản lý innerHTML.

+0

Điều này sẽ chỉ cung cấp cho bạn html cho phần tử đầu tiên với lớp này. Trong thực tế có thể có rất nhiều vì vậy có lẽ bạn sẽ phải sử dụng một cái gì đó như 'each()' hoặc tương tự để xử lý tất cả. – ivantod

+0

Vẫn không tốt ngay cả sau khi chỉnh sửa ... kiểm tra câu trả lời của Blender cho đúng cách để làm điều đó. – ivantod

+0

Nó sẽ hoạt động ngay bây giờ ... Hiệu quả nó không thêm nhiều thông tin hơn câu trả lời của Blender, nhưng cảm ơn bạn. –

0

tôi đề nghị bạn sử dụng JQuery, nơi bạn có thể sử dụng trực tiếp CSS selectors (như .yourclass) để tìm tất cả các yếu tố của một tầng lớp nhất định:

$('.yourclass').doWhatYouWant(); 

Nếu bạn không muốn sử dụng JQuery, bạn có thể sử dụng plain Javascript:

document.getElementsByClassName('my-fancy-class') 

Nhưng hãy cẩn thận với vấn đề không tương thích IE8. Là một thay thế (chậm hơn nhưng bạn có thể xây dựng bộ chọn CSS phức tạp hơn), bạn có thể sử dụng:

document.querySelector('.cssSelector') 

nào sẽ trở lại một yếu tố ứng phó với selector CSS của bạn, hoặc

document.querySelectorAll('.cssSelector') 

nào sẽ trở lại nhiều yếu tố thay thế.

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