Apabila cuba mendapatkan tatasusunan elemen dengan kelas tertentu menggunakan document.getElementsByClassName, IE menghadapi masalah keserasian. Kaedah ini tidak disokong secara langsung oleh IE.
Kaedah Jonathan Snook:
Menggunakan fungsi getElementsByClassName Jonathan Snook, yang mencari elemen berdasarkan padanan ungkapan biasa, boleh membawa kepada kesilapan dalam IE. Ini kerana fungsi itu tidak ditakrifkan sebagai kaedah dokumen.
Penyelesaian:
Untuk menjadikan fungsi itu serasi dengan IE, ia harus dipanggil sebagai fungsi yang berasingan tanpa merujuk kepada dokumen:
function getElementsByClassName(node, classname) { var a = []; var re = new RegExp('(^| )'+classname+'( |$)'); var els = node.getElementsByTagName("*"); for(var i=0,j=els.length; i<j; i++) if(re.test(els[i].className))a.push(els[i]); return a; } var tabs = getElementsByClassName(document.body,'tab');
IE8 Keserasian:
Untuk IE8 dan yang lebih baru, pendekatan alternatif boleh digunakan:
if(!document.getElementsByClassName) { document.getElementsByClassName = function(className) { return this.querySelectorAll("." + className); }; Element.prototype.getElementsByClassName = document.getElementsByClassName; } var tabs = document.getElementsByClassName('tab');
Pendekatan ini memanfaatkan kaedah querySelectorAll yang disokong dalam IE8 , yang beroperasi sama dengan getElementsByClassName.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan `document.getElementsByClassName` dalam Internet Explorer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!