2009-08-15 6 views
5

Итак, сначала я изучаю JS и не буду использовать библиотеку, пока не узнаю все, что мне нужно.Javascript IE и getElementsByClassName проблемы

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

С учетом сказанного, почему на земле делает мой код не работает в < IE 7, Firefox < 3, и т.д.? Safari 4 отлично, Firefox 3.5 отлично подходит и т. Д. Я использую функцию getElementsByClassName от Robert Nyman.

Он не генерирует ошибок в моем IE 6 на OS X (через Wine). Запрос Ajax в порядке, но должен быть начальный div с id = "one" и class = "scroller", но его нет. Я просто так расстраиваюсь.

Спасибо,

  • Том
+0

могли бы вы выкладываю код? не знаю, где его найти: D –

+0

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

+1

получается .setAttribute («класс», «скроллер») не подходит для некоторых IE, поэтому мне нужно также to .setAttribute ("className", "scroller"). Кроме того, мне нужно было добавить все .appendChild() в одну строку, так как IE не удерживает ее от одного до следующего. Но IE 8 не замечает их, как IE 6 и 7. – Tom

ответ

4

Лично я бы просто использовать JQuery, так как у него уже есть проблемы браузера СОВМЕСТИМОСТИ выполняющиеся в.

Все в порядке, чтобы узнать все; но когда дело доходит до обработки совместимости с реализацией, лучше иметь дело с вами, ИМХО. Есть только некоторые вещи, которые мне не нужны: P

2

IE8 дает ошибку - «Объект не поддерживает свойство или метод», когда мы используем getElementsByClassName в javascript. Попробуйте это вместо этого.

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

Я использовал jQuery, чтобы исправить мою проблему с поддержкой этих обратных клиентов с помощью ie7.

Старый:

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

Новое:

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

..or вы можете использовать это в качестве лучшего решения ...

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; 
    } 
} 
Смежные вопросы