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

  • Bratayley

    Bratayley

    30 Aralık 2010
  • KoreanFrogMania님의 채널

    KoreanFrogMa

    18 Aralık 2011
  • Crossover

    Crossover

    18 HAZİRAN 2007