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

  • ipsy

    ipsy

    1 EKİM 2012
  • JorteexHD

    JorteexHD

    20 NİSAN 2012
  • TheFlashCentre

    TheFlashCent

    22 Mayıs 2008