it-swarm.com.de

getElementsByClassName & IE8: Objekt unterstützt diese Eigenschaft oder Methode nicht

Ich weiß, dass "getElementsByClassName" von IE8 nicht unterstützt wird. Wissen Sie, was ich stattdessen verwenden kann? Ich werde durch Fehler nervig 

Msgstr "Objekt unterstützt diese Eigenschaft oder Methode nicht".

Der HTML-Code lautet:

function sumar() {
var elems = document.getElementsByClassName('verdana14 toAdd');
var myLength = elems.length;
total = 0;
for (var i = 0; i < myLength; ++i) {
   if (elems[i].value!="") {
       total += parseInt(elems[i].value,10);
       }
    }

var promedio = total/myLength;
parseFloat(document.getElementById('promediocal').value = promedio.toFixed(2));
}

Dies ist der Eingabetext, der die Javascript-Funktion aufruft:

<input name='AE_EA_1_BIV_003_2' type='text' class='verdana14 toAdd' id='AE_EA_1_BIV_003_2' style='width:50px' onChange='sumar()'/>
<input name='AE_EA_1_BIV_003_3' type='text' class='verdana14 toAdd' id='AE_EA_1_BIV_003_3' style='width:50px' onChange='sumar()'/>
<input name='AE_EA_1_BIV_003_4' type='text' class='verdana14 toAdd' id='AE_EA_1_BIV_003_4' style='width:50px' onChange='sumar()'/>
47
Jesus Ibarra

Verwenden Sie document.querySelectorAll('.verdana14.toAdd').

Siehe auch meinen verwandten Blogbeitrag .

62
Marat Tanalin

Die getElementsByClassName-Methode wird vom IE8 nicht unterstützt.

Sie sollten document.querySelectorAll('.classname') (funktioniert in IE8 +) oder eine Bibliothek verwenden, die diese Funktionalität implementiert - wie:

  • jQuery
  • Moo Tools
  • DOJO
  • YUI
  • Prototype

    ... Unter anderen...


querySelectorAll Unterstützung:

http://www.quirksmode.org/dom/w3c_core.html#t13

getElementsByClassName Unterstützung:

http://www.quirksmode.org/dom/w3c_core.html#t11

14
xandercoded

Sie könnten Ihre eigenen schreiben. So etwas wie:

function GEBCN(cn){
    if(document.getElementsByClassName) // Returns NodeList here
        return document.getElementsByClassName(cn);

    cn = cn.replace(/ *$/, '');

    if(document.querySelectorAll) // Returns NodeList here
        return document.querySelectorAll((' ' + cn).replace(/ +/g, '.'));

    cn = cn.replace(/^ */, '');

    var classes = cn.split(/ +/), clength = classes.length;
    var els = document.getElementsByTagName('*'), elength = els.length;
    var results = [];
    var i, j, match;

    for(i = 0; i < elength; i++){
        match = true;
        for(j = clength; j--;)
            if(!RegExp(' ' + classes[j] + ' ').test(' ' + els[i].className + ' '))
                match = false;
        if(match)
            results.Push(els[i]);
    }

    // Returns Array here
    return results;
}

Funktioniert gut, aber Sie könnten auch eine schnellere schreiben, wenn Sie möchten. Dann kannst du einfach ändern:

document.getElementsByClassName('verdana14 toAdd');

Zu:

GEBCN('verdana14 toAdd');
8
Paulpro

verwenden Sie jQuery oder filtern Sie die Ergebnisse nach getElementsByTag

0
Simon Wang