Tài liệu.getEuityByClass không phải là một chức năng


142

Tôi đang cố gắng để chạy một chức năng onclickcủa bất kỳ nút nào với class="stopMusic". Tôi đang gặp lỗi trong Fireorms

document.getEuityByClass không phải là một hàm

Đây là mã của tôi:

var stopMusicExt = document.getElementByClass("stopButton");
    stopButton.onclick = function() {
        var ta = document.getElementByClass("stopButton");
        document['player'].stopMusicExt(ta.value);
        ta.value = "";
    };


Tên hàm của bạn bị thiếu một 's'. Trong câu trả lời được chấp nhận, điểm xung quanh 's' mất tích không phải là điều hiển nhiên. Do đó bình luận nó ở đây.
Anurag Priyadarshi

Câu trả lời:


249

Bạn có thể có nghĩa document.getElementsByClassName()(và sau đó lấy mục đầu tiên ra khỏi danh sách nút kết quả):

var stopMusicExt = document.getElementsByClassName("stopButton")[0];

stopButton.onclick = function() {
    var ta = document.getElementsByClassName("stopButton")[0];
    document['player'].stopMusicExt(ta.value);
    ta.value = "";
};

Bạn vẫn có thể gặp lỗi

document.getElementsByClassName không phải là một chức năng

tuy nhiên, trong các trình duyệt cũ hơn, trong trường hợp đó bạn có thể cung cấp triển khai dự phòng nếu bạn cần hỗ trợ các trình duyệt cũ hơn.


Cảm ơn, điều đó có ý nghĩa. Là một chức năng để chọn tất cả các tên lớp phù hợp với trình duyệt hơn? Hoặc có thể chọn một phạm vi cho các nút mảng? (tức là 0-100)?
dùng547794

Không phải là một thực hiện tích hợp. Bạn có thể cần sử dụng một thư viện như Mootools hoặc jQuery (điều này làm cho nó siêu dễ dàng).
BoltClock

để thư viện nhẹ hơn jQuery chỉ thực hiện các lựa chọn, bạn có thể sử dụng Sizzle , đây là những gì mà các công cụ chọn của jQuery dựa trên.
zzzzBov

3
Từ caniuse.com/#feat=getelementsbyclassname , có vẻ như chỉ IE8 không hỗ trợ phương pháp này.
tmeans

1
@tmeans: Yup, mặc dù đó là một vấn đề khá lớn tại thời điểm này được đăng.
BoltClock

14

Như những người khác đã nói, bạn không sử dụng đúng tên hàm và nó không tồn tại chung trong tất cả các trình duyệt.

Nếu bạn cần thực hiện tìm nạp nhiều trình duyệt khác với bất kỳ phần tử nào có id document.getElementById(), thì tôi khuyên bạn nên có một thư viện hỗ trợ các bộ chọn CSS3 trên tất cả các trình duyệt. Nó sẽ giúp bạn tiết kiệm một lượng lớn thời gian phát triển, thử nghiệm và sửa lỗi. Cách dễ nhất là chỉ sử dụng jQuery vì nó có sẵn rộng rãi, có tài liệu tuyệt vời, có quyền truy cập CDN miễn phí và có một cộng đồng tuyệt vời gồm những người đứng sau nó để trả lời các câu hỏi. Nếu điều đó có vẻ như nhiều hơn bạn cần, thì bạn có thể lấy Sizzle chỉ là một thư viện bộ chọn (thực ra nó là công cụ chọn bên trong jQuery và các công cụ khác). Tôi đã sử dụng nó trong các dự án khác và nó dễ dàng, năng suất và nhỏ.

Nếu bạn muốn chọn nhiều nút cùng một lúc, bạn có thể thực hiện nhiều cách khác nhau. Nếu bạn cung cấp cho họ tất cả cùng một lớp, bạn có thể làm điều đó với:

var list = document.getElementsByClassName("myButton");
for (var i = 0; i < list.length; i++) {
    // list[i] is a node with the desired class name
}

và nó sẽ trả về một danh sách các nút có tên lớp đó.

Trong Sizzle, nó sẽ là thế này:

var list = Sizzle(".myButton");
for (var i = 0; i < list.length; i++) {
    // list[i] is a node with the desired class name
}

Trong jQuery, nó sẽ là thế này:

$(".myButton").each(function(index, element) {
    // element is a node with the desired class name
});

Trong cả Sizzle và jQuery, bạn có thể đặt nhiều tên lớp vào bộ chọn như thế này và sử dụng các bộ chọn mạnh mẽ và phức tạp hơn nhiều:

$(".myButton, .myInput, .homepage.gallery, #submitButton").each(function(index, element) {
    // element is a node that matches the selector
});

2
Hiện tại dường như có hỗ trợ rộng rãi (phổ quát?) Cho document.getElementsByClassName caniuse.com/#feat=getelementsbyclassname
Matt Evans

@MatthewEvans - Vâng, đây là câu trả lời năm 2011.
jfriend00

12

Trước khi nhảy vào kiểm tra lỗi thêm, trước tiên hãy kiểm tra xem

document.getEuity s ByClassName () chính nó.

kiểm tra lại getElement nó s và không getElement




0

bạn đánh vần sai, nó phải là "getElementsByClassName",

var objs = document.getElementsByClassName("stopButton");
var stopMusicExt = objs[0]; //retrieve the first node in the stack

//your remaining function goes down here.. 
document['player'].stopMusicExt(ta.value);
ta.value = "";

document.getElementsByClassName - trả về một chồng các nút có nhiều hơn một mục, vì các thuộc tính Class được sử dụng để gán cho nhiều đối tượng ...


-1
    enter code here
var stopMusicExt = document.getElementByClass("stopButton").value;
    stopButton.onclick = function() {
        var ta = document.getElementByClass("stopButton");
        document['player'].stopMusicExt(ta.value);
        ta.value = "";
    };


// .value will hold all data from class stopButton

-1

Các getElementByClasskhông tồn tại, có lẽ bạn muốn sử dụng getElementsByClassName. Tuy nhiên, bạn có thể sử dụng phương pháp thay thế (được sử dụng trong các mẫu angular / vue / Reac ...)

function stop(ta) {
  console.log(ta.value) // document['player'].stopMusicExt(ta.value);
  ta.value='';
}
<input type="button" onclick="stop(this)" class="stopMusic" value='Stop 1'>
<input type="button" onclick="stop(this)" class="stopMusic" value='Stop 2'>


-1

Nếu bạn đã viết "getEuityByClassName" này thì bạn sẽ gặp phải lỗi này "document.getEuityByClass không phải là một hàm" vì vậy để khắc phục lỗi đó, chỉ cần viết "getElementsByClassName". Bởi vì nó phải là Element chứ không phải Element.


Nó đã được trả lời 8 năm trước, bạn có thể muốn kiểm tra các câu trả lời hiện có để tránh trả lời điều tương tự
Mickael B.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.