2011-12-24 32 views
6

Tôi đã nhận thấy một số lỗi trong hàm window.onload. (Có thể đó là sai của tôi) Vấn đề là khi tôi sử dụng theo chức năng đơn giản, nó hoạt động trên tất cả các trình duyệt nhưng Chrome.Vấn đề về chức năng window.onload

var name=$("#name"); 
window.onload = function(){ 
    name.fadeIn(500); 
}; 

Sau đó chỉ cần sự quan tâm, cố gắng này quá:

var name; 
window.onload = function(){ 
    name=$("#name"); 
    name.fadeIn(500); 
}; 

Trong tất cả các trường hợp trên, các công cụ dev của Chrome đã cho tôi thông báo lỗi này:

Uncaught TypeError: Object [object Object] has no method 'fadeIn' 

tôi đã giải quyết này lỗi với mã sau.

window.onload = function(){ 
    var name=$("#name"); 
    name.fadeIn(500); 
}; 

Nhưng bây giờ muốn có một số giải thích, tại sao không làm việc 2 đoạn mã đầu tiên?

+1

Không biết về ví dụ thứ hai, nhưng khối mã đầu tiên có thể yêu cầu phần tử chưa tồn tại. –

+0

Tôi đã lưu vào bộ nhớ cache 'name' trước khi làm việc với nó,' var name = $ ("# name"); 'và một lần nữa, trên tất cả các trình duyệt khác, nó chỉ làm việc CHROME cho lỗi –

+0

. Tôi không phải là một chuyên gia về JQuery, nhưng nếu các hàm '$()' về cơ bản là các hàm 'getElementById()', thì phần tử 'name' có thể chưa được nạp vào DOM. Tại sao nó là độc quyền cho chrome là một puzzler mặc dù. Bạn có đặt kịch bản của bạn ở cuối trang bằng cách này không? –

Trả lời

4

Tôi nghĩ rằng điều này có thể là một biến toàn cầu được gọi là tên. Nếu bạn gọi tên một cái gì đó khác nhau, name1, nó hoạt động trong chrome. http://jsfiddle.net/R2PuZ/1/

+1

OMG)). Tôi thậm chí không nghĩ về điều này. Cảm ơn bạn –

+0

Vâng, tôi đã chơi với nó một chút ... gán giá trị cho biến toàn cầu trong Safari sẽ xác nhận rằng đó là một phần tử, nhưng nó sẽ không có bất kỳ thuộc tính nào (hoặc ít nhất một số) (chẳng hạn như innerHTML) . Hoạt động trong Firefox mặc dù. Rất lạ. –

+0

vâng, một trong những điều khiến bạn đốt cháy dầu nửa đêm :) Thật thú vị khi đặt tên là "kết quả", trong đó jsfiddle dường như đến từ tên của khung nội tuyến nơi kết quả được hiển thị. Vẫn chơi với nó .. –

Các vấn đề liên quan