SORU
14 EYLÜL 2011, ÇARŞAMBA


javascript belge.getElementsByClassName uyumluluğu IE

Belirli bir sınıf olan unsurların bir dizi almak için en iyi yöntemi nedir?

Belge kullanırdım.getElementsByClassName ama IE bunu desteklemiyor.

Jonathan Snook's solution: bir denedim

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 = document.getElementsByClassName(document.body,'tab');

...ama IE hala diyor ki:

Nesne bu özelliği veya yöntemi desteklemiyor

Herhangi bir fikir, daha iyi yöntemler, hata düzeltmeleri?

Şimdiden teşekkürler!

Herhangi bir çözüm jQuery veya diğer ilgili kullanmamayı tercih ederim "hantal javascript".



Güncelleme:

Çalışma var!

@joe mentioned işlevi document bir yöntem değildir.

Çalışan kod şu şekilde görünecektir:

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



...Aynı zamandasadece IE8 destek gerekiyorsao zaman bu iş

if(!document.getElementsByClassName) {
    document.getElementsByClassName = function(className) {
        return this.querySelectorAll("."   className);
    };
    Element.prototype.getElementsByClassName = document.getElementsByClassName;
}

Minified: çok küçük olmak biter

(function(d,g){d[g]||(d[g]=function(g){return this.querySelectorAll("." g)},Element.prototype[g]=d[g])})(document,"getElementsByClassName");

Ve sadece normal gibi kullan:

var tabs = document.getElementsByClassName('.tab');

ya

var tabs = document.getElementsByClassName('.tab');

CEVAP
14 EYLÜL 2011, ÇARŞAMBA


Belgenin bir yöntem değil

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

tabs = getElementsByClassName(document.body,'tab');  // no document

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ampisound

    Ampisound

    12 Kasım 2006
  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • TheFlightsuit

    TheFlightsui

    22 HAZİRAN 2009