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

  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • Metheud

    Metheud

    9 EYLÜL 2006
  • Microsoft Help & Training Videos

    Microsoft He

    31 Mart 2009