Saya mencoba menjalankan fungsi onclick
tombol apa saja dengan class="stopMusic"
. Saya mendapatkan kesalahan di Firebug
document.getElementByClass bukan fungsi
Ini kode saya:
var stopMusicExt = document.getElementByClass("stopButton");
stopButton.onclick = function() {
var ta = document.getElementByClass("stopButton");
document['player'].stopMusicExt(ta.value);
ta.value = "";
};
javascript
pengguna547794
sumber
sumber
Jawaban:
Anda mungkin bermaksud
document.getElementsByClassName()
(dan kemudian mengambil item pertama dari daftar simpul yang dihasilkan):Anda mungkin masih mendapatkan kesalahan
di browser yang lebih lama, namun, dalam hal ini Anda dapat memberikan implementasi mundur jika Anda perlu mendukung browser yang lebih lama.
sumber
Seperti yang orang lain katakan, Anda tidak menggunakan nama fungsi yang tepat dan itu tidak ada secara universal di semua browser.
Jika Anda perlu melakukan cross-browser mengambil apa pun selain elemen dengan id
document.getElementById()
, maka saya sangat menyarankan Anda mendapatkan perpustakaan yang mendukung pemilih CSS3 di semua browser. Ini akan menghemat banyak waktu pengembangan, pengujian dan perbaikan bug. Hal termudah untuk dilakukan adalah menggunakan jQuery karena tersedia secara luas, memiliki dokumentasi yang sangat baik, memiliki akses CDN gratis dan memiliki komunitas yang sangat baik di belakangnya untuk menjawab pertanyaan. Jika itu sepertinya lebih dari yang Anda butuhkan, maka Anda bisa mendapatkan Sizzle yang hanya perpustakaan pemilih (itu sebenarnya mesin pemilih di dalam jQuery dan lain-lain). Saya sudah menggunakannya sendiri di proyek lain dan mudah, produktif, dan kecil.Jika Anda ingin memilih beberapa node sekaligus, Anda dapat melakukannya dengan berbagai cara. Jika Anda memberi mereka semua kelas yang sama, Anda dapat melakukannya dengan:
dan itu akan mengembalikan daftar node yang memiliki nama kelas itu.
Dalam Sizzle, ini akan menjadi ini:
Di jQuery, ini akan menjadi ini:
Di Sizzle dan jQuery, Anda dapat memasukkan beberapa nama kelas ke dalam pemilih seperti ini dan menggunakan penyeleksi yang jauh lebih rumit dan kuat:
sumber
Sebelum beralih ke pemeriksaan kesalahan lebih lanjut, harap periksa dulu apakah ada
document.getElement s ByClassName () itu sendiri.
periksa nya getElement s dan tidak getElement
sumber
Seharusnya
getElementsByClassName
, dan tidakgetElementByClass
. Lihat ini - https://developer.mozilla.org/en/DOM/document.getElementsByClassName .Perhatikan bahwa beberapa browser / versi mungkin tidak mendukung ini.
sumber
document.querySelectorAll
bekerja cukup baik dan memungkinkan Anda untuk mempersempit pilihan Anda.https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
sumber
Anda salah mengeja, seharusnya "getElementsByClassName",
document.getElementsByClassName - mengembalikan setumpuk node dengan lebih dari satu item, karena atribut CLASS digunakan untuk menetapkan ke beberapa objek ...
sumber
sumber
Tidak
getElementByClass
ada, mungkin Anda ingin menggunakangetElementsByClassName
. Namun Anda dapat menggunakan pendekatan alternatif (digunakan dalam template angular / vue / react ...)sumber
Jika Anda menulis "getElementByClassName" ini, maka Anda akan menjumpai kesalahan ini "document.getElementByClass bukan fungsi" jadi untuk mengatasi kesalahan itu cukup tulis "getElementsByClassName". Karena itu harus Elemen bukan Elemen.
sumber