2009-08-15 16 views
5

Po pierwsze, uczę się JS i nie będę korzystał z biblioteki, dopóki nie dowiem się wszystkiego, czego potrzebuję.Problemy z JavaScript IE i getElementsByClassName

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

Z powiedział, dlaczego na ziemi jest mój kod nie działa w < IE 7, Firefox < 3, etc? Safari 4 jest idealny, Firefox 3.5 jest świetny, itp. Używam funkcji getElementsByClassName od Roberta Nymana.

Nie generuje żadnych błędów w moim IE 6 na OS X (poprzez Wine). Żądanie Ajax jest w porządku, ale powinien istnieć początkowy element div o id = "one" i class = "scroller", ale nie ma. Po prostu jestem tak sfrustrowany tym.

Dzięki,

  • Tom
+0

można opublikować kod? nie wiem, gdzie go znaleźć: D –

+0

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

+1

okazuje się .setAttribute ("klasa", "scroller") nie jest dobre dla niektórych IE, więc muszę również do .setAttribute ("className", "scroller"). Dodatkowo musiałem dodać wszystkie .appendChild() w jednym wierszu, ponieważ IE nie przechowuje tego od jednego do drugiego. Ale IE 8 nie obserwuje ich jako IE 6 i 7. – Tom

Odpowiedz

4

Osobiście, chciałbym po prostu użyć jQuery, jak to już ma problemy kompatybilności przeglądarki uruchomionych na.

Wszystko w porządku, aby nauczyć się wszystkiego; ale jeśli chodzi o radzenie sobie z wdrażaniem, lepiej, żeby było to dla ciebie, IMHO. Są tylko niektóre rzeczy, których nie obchodzi: P

2

IE8 daje błąd - "Obiekt nie obsługuje właściwości lub metody", gdy używamy getElementsByClassName w javascript. Spróbuj tego.

0

Użyłem jQuery, aby naprawić mój problem z obsługą tych zacofanych klientów za pomocą ie7.

Stary:

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

Nowość:

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

..or można wykorzystać jako lepsze rozwiązanie ...

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; 
    } 
} 
Powiązane problemy