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

  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • paikimchung

    paikimchung

    12 Mayıs 2006
  • Pepsi

    Pepsi

    1 Kasım 2005