2009-08-15 14 views
5

Primero, estoy aprendiendo JS y no usaré una biblioteca hasta que sepa todo lo que necesito.Javascript IE y getElementsByClassName problemas

http://www.tombarrasso.com/search/

Con esto dicho por qué en la tierra no mi código no funciona en < IE 7, Firefox 3 <, etc? Safari 4 es perfecto, Firefox 3.5 es genial, etc. Estoy usando la función getElementsByClassName de Robert Nyman.

No genera errores en mi IE 6 en OS X (a través de Wine). La solicitud de Ajax está bien, pero debe haber un div inicial con id = "one" y class = "scroller", pero no es así. Me estoy tan frustrado con esto.

Gracias,

  • Tom
+0

¿podría enviar el ¿código? no estoy seguro de dónde encontrarlo: D –

+0

http://www.tombarrasso.com/search/x.js – Tom

+1

resulta que .setAttribute ("clase", "scroller") no es bueno para algunos IEs, así que también necesito a .setAttribute ("className", "scroller"). Además, necesitaba agregar todo .appendChild() en una línea, ya que IE no lo mantiene de uno al siguiente. Pero IE 8 no los observa como lo hacen IE 6 y 7. – Tom

Respuesta

4

Personalmente, sólo tiene que utilizar jQuery, ya que ya tiene los problemas de compatibilidad del navegador que se están ejecutando en.

Todo está bien para aprenderlo todo; pero cuando se trata de manejar la compatibilidad de la implementación es mejor que se solucione por ti, en mi humilde opinión. Hay algunas cosas que no me importan: P

2

IE8 da error - "El objeto no admite propiedad o método" cuando usamos getElementsByClassName en javascript. Prueba esto en su lugar.

if (document.getElementsByClassName) { 
    var obj = document.getElementsByClassName('classA'); 
} 
0

Utilicé jQuery para solucionar mi problema al admitir clientes con ie7.

antigua:

var editrow = grid.get_element().getElementsByClassName("rgEditRow")[0]; 

Nuevo:

var editrow = $(".rgEditRow", grid.get_element())[0]; 
8

..o puede utilizar esto como una solución mejor ...

if (typeof document.getElementsByClassName!='function') { 
    document.getElementsByClassName = function() { 
     var elms = document.getElementsByTagName('*'); 
     var ei = new Array(); 
     for (i=0;i<elms.length;i++) { 
      if (elms[i].getAttribute('class')) { 
       ecl = elms[i].getAttribute('class').split(' '); 
       for (j=0;j<ecl.length;j++) { 
        if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) { 
         ei.push(elms[i]); 
        } 
       } 
      } else if (elms[i].className) { 
       ecl = elms[i].className.split(' '); 
       for (j=0;j<ecl.length;j++) { 
        if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) { 
         ei.push(elms[i]); 
        } 
       } 
      } 
     } 
     return ei; 
    } 
} 
Cuestiones relacionadas