10

Tôi đang gặp sự cố thực sự với phạm vi JavaScript trong IE 9.IE ném Lỗi JavaScript: Giá trị của thuộc tính 'googleMapsQuery' là null hoặc không xác định, không phải là đối tượng Hàm (hoạt động trong các trình duyệt khác)

là bên trong cơ thể của tài liệu của tôi (có, tôi nhận ra kịch bản nên đi vào đầu cho HTML thích hợp, nhưng tôi đã không bao giờ có nó phá vỡ một kịch bản trước). Kịch bản là trong cơ thể bởi vì tôi không muốn gây rối với một trang tiêu đề chia sẻ cho một kịch bản mà chỉ phù hợp cho trang này:

<script type="text/javascript"> 
function googleMapsQuery(accountNum) { 
    // function code is here (omitted for brevity) 
} 
</script> 

Đây là bên trong một khối td bên trong một khối tr bên trong một tbody chặn bên trong một khối table bên trong một khối form bên trong body:

<button id="google-422111" onclick="googleMapsQuery(422111)" type="button">Google This!</button> 

tôi thậm chí di chuyển các khối kịch bản trên hình thức chỉ trong trường hợp thứ tự của các khai báo hàm kịch bản là có liên quan (nó không phải).

Các kịch bản hoạt động hoàn hảo trong FireFox và Chrome, nhưng trong IE 9 (có hoặc không có quan điểm tương thích trên), tôi nhận được lỗi này:

SCRIPT5007: The value of the property 'googleMapsQuery' is null or undefined, not a Function object

tôi đã nghiên cứu phạm vi JavaScript, và tôi không thể tìm ra lý do nào đó tại sao IE cho rằng 'googleMapsQuery' là thuộc tính và tại sao nó không được xác định. Đó là một chức năng, và tôi đã định nghĩa nó!

+2

nội dung là một nơi hoàn hảo cho kịch bản, ở dưới cùng của cơ thể thực sự được ưa thích :) –

+0

Thẻ tập lệnh trong HEAD được xử lý đồng bộ (serially) trước khi xử lý nội dung. Các thẻ tập lệnh trong nội dung được tải không đồng bộ, cùng với các tập lệnh khác và các nút DOM còn lại ... Tôi không sử dụng thẻ

Trả lời

11

Tôi đã tìm thấy câu trả lời và bất chấp những gì tôi đã báo cáo, đó KHÔNG phải là trình duyệt cụ thể. Lỗi này nằm trong mã chức năng của tôi và sẽ xảy ra trong bất kỳ trình duyệt nào. Nó sôi xuống này. Tôi có hai dòng trong mã của tôi là FireFox/FireBug cụ thể. Họ đã sử dụng console.log. Trong IE, họ đã ném một lỗi, vì vậy tôi nhận xét chúng ra (hoặc vì vậy tôi nghĩ). Tôi đã làm một công việc crappy bình luận chúng ra, và phá vỡ các bracketing trong chức năng của tôi.

Mã gốc (với console.log trong nó):

if (sxti.length <= 50) console.log('sxti=' + sxti); 
if (sxph.length <= 50) console.log('sxph=' + sxph); 

Mã bị hỏng (dấu ngoặc thất lạc bên trong bình luận):

if (sxti.length <= 50) { //console.log('sxti=' + sxti); } 
if (sxph.length <= 50) { //console.log('sxph=' + sxph); } 

cố định Mã (khung cố định bình luận bên ngoài):

if (sxti.length <= 50) { }//console.log('sxti=' + sxti); 
if (sxph.length <= 50) { }//console.log('sxph=' + sxph); 

Vì vậy, đó là mã hóa sloppy của riêng tôi. Hàm này thực sự không được xác định, bởi vì một lỗi cú pháp giữ cho nó không bị đóng.

Ồ, sống và học hỏi. ;)

2

Bạn đã thử thêm dấu chấm phẩy vào onclick="googleMapsQuery(422111);". Tôi không có đủ mã của bạn để kiểm tra xem dấu chấm phẩy còn thiếu có gây ra lỗi hay không, nhưng tức là có nhiều cú pháp về cú pháp.

+0

Nó không phải là dấu chấm phẩy. Chức năng này thực sự không được xác định do một số nhận xét cẩu thả và sự đánh dấu trên phần của tôi. Một lỗi cú pháp thực sự sẽ giữ cho kịch bản của tôi thậm chí biên dịch nếu nó là mã thực thi. ;) – chriv

0

Chỉ một vài phút trước, tôi đã phải đối mặt với cùng một vấn đề. Tôi đã nhận được vấn đề đó là sau khi chỉ cần đặt jQuery của bạn bắt đầu kịch bản jQuery khác. Sau khi tất cả nó sẽ làm việc tốt.

+8

Câu trả lời này không có ý nghĩa với tôi. –

17

Tôi gặp sự cố tương tự với thuộc tính không có giá trị hoặc không xác định.

Điều này đã kết thúc là chế độ tài liệu của IE đã được đặt mặc định theo Tiêu chuẩn IE7.Điều này là do chế độ tương thích được tự động đặt để sử dụng cho tất cả các trang web mạng nội bộ (Công cụ>Thiết lập chế độ tương thích>Hiển thị trang web mạng nội bộ tương thích Xem).

+2

Điều này đã giúp tôi ồ ạt - trang này là lần truy cập đầu tiên cho tìm kiếm của Google "Giá trị của thuộc tính là null hoặc không xác định, không phải là đối tượng Hàm" và đây là giải pháp tôi cần. Cảm ơn! – benshepherd

0

Vì vậy, tôi đã có một tình huống tương tự với cùng một lỗi. Tôi quên tôi thay đổi chế độ tương thích trên máy dev của tôi và tôi đã có một lệnh console.log trong javascript của tôi là tốt. Tôi đã thay đổi chế độ tương thích trở lại trong IE, và gỡ bỏ lệnh console.log. Không còn vấn đề gì nữa.

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