代码之家  ›  专栏  ›  技术社区  ›  Instance Hunter

for循环中的javascript格式不正确错误

  •  6
  • Instance Hunter  · 技术社区  · 16 年前

    我从一个 example . 我已经读了100遍了。

    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++) {
        -------------------^
    

    更新

    只有当页面的Firebug打开时才会显示错误。

    4 回复  |  直到 16 年前
        1
  •  9
  •   SLaks    16 年前

    您在一个声称完全兼容XHTML的HTML页面中使用了javascript代码。因此, < 字符不能出现在JavaScript中,因为它将被解释为XHTML标记的开头。

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

    你可以改变 DOCTYPE 并不是XHTML。
    您可以将JavaScript包含在 <![CDATA[ 部分。
    您可以将javascript移动到单独的.js文件中。
    你可以逃避 < 具有 &lt 而且每一个 & 具有 &amp; . 我不建议使用这个选项;它会使代码不可读,而且几乎肯定不会在IE中工作。

        2
  •  1
  •   Sukasa    16 年前

    很可能您的错误不在这段代码中,但上面的一些内容会使错误逐渐减少。因此,不要在这段代码中发现错误,而是在上面查找可能导致此错误的格式错误的HTML或JavaScript。

        3
  •  0
  •   James Bailey    16 年前

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

    <html>
    <head>
        <script type="text/javascript" src="test.js"></script>
    </head>
    <body>
        test
    </body>
    </html>
    
        4
  •  0
  •   Matthew Flaschen    16 年前

    为我工作。请发布完整的文件,并确保您使用的是脚本标记。

    我张贴了一张 validating pastebin file (Chetan在技术上是无效的),它与Firebug一起工作正常。因此,我建议您返回一整页验证不起作用的代码。