2009-11-03 99 views
6

我从example复制了此代码。我读过100遍。for循环中的Javascript格式错误

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; 
}; 

为什么火狐说:

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

UPDATE

的错误时,萤火虫被打开的页面只显示。

+2

工作正常 - http://jsbin.com/ifuhu/edit – 2009-11-04 00:03:29

+2

您的问题得到了解决,但我会鼓励你检查是否有一个本地'map'实现宣告自己(这将跟随前原生的,如果可用的话),由现代浏览器提供的本地实现*真的*要快得多。 – CMS 2009-11-04 00:18:54

回答

9

您正在HTML页面中使用JavaScript代码,声称自己完全符合XHTML标准。因此,<字符不能出现在Javascript中,因为它会被解释为XHTML标记的开始。

有很多方法可以解决这个问题。

您可以更改DOCTYPE并使其不是XHTML。
您可以将Javascript放入<![CDATA[部分。
您可以将Javascript移动到单独的.js文件中。
您可以使用&lt&&amp;每次出现<。我不推荐这个选项;它会使你的代码不可读,几乎肯定不会在IE中工作。

+1

太棒了。谢谢。 – 2009-11-04 00:11:10

+0

我以为我也尝试过DOCTYPE,但我猜不是。 – 2009-11-04 00:14:17

1

可能你的错误不在此代码中,但它上面的东西滴漏下来。所以,不要在这段代码中发现错误,而应该在上面查看格式不正确的HTML或JavaScript,而这可能会导致此错误。

+0

没有HTML或其他Javascript。 – 2009-11-04 00:01:31

0

适合我。请发布完整文件,并确保您使用脚本标记。

我发布了一个validating pastebin file(Chetan's在技术上无效),它在Firebug中工作正常。所以我建议你回来一整页的验证代码不起作用。

+0

这是完整的文件,除了html和脚本标签的各种组合。我已经尝试了一个脚本标记。我已经尝试过一个完整的HTML页面,其中只包含一个脚本标记,并且没有文档类型。 – 2009-11-04 00:00:47

0

如果我使用下面的HTML和文本作为“test.js”,我也不会在Firebug中出错。

<html> 
<head> 
    <script type="text/javascript" src="test.js"></script> 
</head> 
<body> 
    test 
</body> 
</html>