2009-08-15 33 views
5

Vì vậy, trước hết tôi đang học JS và sẽ không sử dụng thư viện cho đến khi tôi biết tất cả những gì tôi cần.Javascript IE và getElementsByClassName vấn đề

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

Với những gì đã nói lý do tại sao trên trái đất không mã của tôi không làm việc trong < IE 7, Firefox < 3, vv? Safari 4 là hoàn hảo, Firefox 3.5 rất tuyệt, v.v. Tôi đang sử dụng hàm getElementsByClassName từ Robert Nyman.

Nó không tạo ra lỗi trong IE 6 của tôi trên OS X (thông qua Wine). Yêu cầu Ajax là tốt, nhưng phải có một div ban đầu với id = "one" và class = "scroller", nhưng không có. Tôi chỉ cảm thấy thất vọng với điều này.

Cảm ơn,

  • Tom
+0

bạn có thể đăng bài mã? không chắc chắn nơi để tìm thấy nó: D –

+0

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

+1

quay ra .setAttribute ("class", "scroller") không tốt cho một số IE, vì vậy tôi cũng cần to .setAttribute ("className", "scroller"). Ngoài ra tôi cần thêm tất cả .appendChild() vào một dòng, vì IE không giữ nó từ cái này sang dòng khác. Nhưng IE 8 không quan sát chúng như IE 6 và 7. – Tom

Trả lời

4

Cá nhân, tôi sẽ chỉ sử dụng jQuery, vì nó đã có những vấn đề trình duyệt tương thích bạn đang chạy vào.

Mọi thứ đều tốt đẹp để học tất cả; nhưng khi nói đến việc xử lý khả năng tương thích thực hiện thì tốt hơn là phải xử lý nó cho bạn, IMHO. Chỉ có một số điều tôi không quan tâm: P

2

IE8 đưa ra lỗi - "Đối tượng không hỗ trợ thuộc tính hoặc phương thức" khi chúng tôi sử dụng getElementsByClassName trong javascript. Hãy thử thay vào đó.

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

Tôi đã sử dụng jQuery để khắc phục sự cố của mình hỗ trợ các ứng dụng khách ngược đó với ie7.

Cũ:

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

mới:

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

..or bạn có thể sử dụng như là một giải pháp tốt hơn ...

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; 
    } 
} 
Các vấn đề liên quan