2009-11-03 25 views
6

Tôi đã sao chép mã này từ một số example. Tôi đã đọc nó 100 lần.Lỗi không được định dạng Javascript trong vòng lặp

Array.prototype.map = function(fn) { 
    var r = []; 
    var l = this.length; 
    for(var i = 0; i < l; i++) { 
     r.push(fn(this[i])); 
    } 
    return r; 
}; 

Tại sao Firefox nói:

not well-formed 
file:///some/path.html       Line: 5 
    for(var i = 0; i < l; i++) { 
    -------------------^ 

CẬP NHẬT

Các lỗi chỉ được hiển thị khi Firebug được bật cho trang.

+2

trình tốt - http://jsbin.com/ifuhu/edit –

+2

Vấn đề của bạn đã được giải quyết, nhưng tôi sẽ khuyến khích bạn kiểm tra xem có một người gốc 'thực hiện map' trước khi tuyên bố riêng của bạn (mà sẽ shadow bản địa nếu có), triển khai gốc được cung cấp bởi các trình duyệt hiện đại là * thực sự * nhanh hơn nhiều. – CMS

Trả lời

9

Bạn đang sử dụng mã Javascript trong trang HTML tuyên bố hoàn toàn tuân thủ XHTML. Do đó, các ký tự < không thể xuất hiện trong Javascript, vì nó sẽ được hiểu là sự khởi đầu của một thẻ XHTML.

Có một số cách để khắc phục sự cố này.

Bạn có thể thay đổi DOCTYPE và biến nó thành XHTML.
Bạn có thể đính kèm Javascript trong phần <![CDATA[.
Bạn có thể di chuyển Javascript vào một tệp .js riêng biệt.
Bạn có thể thoát khỏi mọi lần xuất hiện của < với &lt và mọi & bằng &amp;. Tôi không khuyên bạn nên lựa chọn này; nó sẽ làm cho mã của bạn không đọc được và hầu như chắc chắn sẽ không hoạt động trong IE.

+1

Tuyệt vời. Cảm ơn. –

+0

Tôi nghĩ rằng tôi đã thử DOCTYPE quá, nhưng tôi đoán là không. –

1

Có thể là do lỗi của bạn không có trong mã này, nhưng có lỗi ở trên đó là lỗi nhỏ. Vì vậy, thay vì tìm lỗi trong mã này, hãy xem ở trên cho HTML hoặc javascript không đúng định dạng có thể gây ra lỗi này thay thế.

+0

Không có HTML hoặc Javascript khác. –

0

Làm việc cho tôi. Vui lòng đăng toàn bộ tệp và đảm bảo bạn đang sử dụng thẻ tập lệnh.

Tôi đã đăng validating pastebin file (Chetan về mặt kỹ thuật không hợp lệ) và hoạt động tốt với Firebug. Vì vậy, tôi khuyên bạn nên quay lại với trang đầy đủ của mã xác thực không hoạt động.

+0

Đó là tệp đầy đủ, ngoài các kết hợp khác nhau của thẻ html và tập lệnh. Tôi đã thử chỉ với một thẻ script. Tôi đã thử với một trang HTML đầy đủ bao gồm chỉ là một thẻ script trong cơ thể, có và không có một DOCTYPE. –

0

Nếu tôi sử dụng HTML sau và văn bản của bạn là "test.js", tôi cũng không gặp lỗi trong Firebug.

<html> 
<head> 
    <script type="text/javascript" src="test.js"></script> 
</head> 
<body> 
    test 
</body> 
</html> 
Các vấn đề liên quan