火狐浏览器的Firebug无法显示我的JavaScript代码?找不到错误。

7

我想使用Firebug调试一些脚本(因为我在浏览器窗口中看不到任何东西),但是当我在Firefox中点击脚本选项卡时,它会给出以下错误信息:

如果标签有"type"属性,则应为"text/javascript"或"application/javascript"。此外,脚本必须可解析(语法正确)。

我做错了什么?

以下是我的代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>



<script src="jquery-1.7.1.js"></script>
<script type="text/javascript">
$(function() {
/* fix: “close” the value of i inside createFunction, so it won't change */
        var createFunction = function(i) {
            return function() { alert(i); };
        };

        for (var i=0; i<5; i++) {
            $('p').appendTo('body').on("click", createFunction(i));
}

})();
</script>
</body>
</html>

1
我的文本中有黑色粗体字! - YoniGeek
当我在Firefox中运行它时,我会得到一个Firebug错误$(function () {var createFunction = function (i) {return function () {alert(i);};};for (var i = 0; i < 5; i++) {$("p").appendTo("body").on("click", createFunction(i));}})不是一个函数 - acme
在您的第一个<script>标签中添加type="text/javascript" - Kris Ivanov
<script src="jquery-1.7.1.js" type="text/javascript"></script> - nbrooks
@KrisIvanov和nbrooks,使用HTML5不需要那样做。 - acme
3个回答

4
我猜测您需要在DOM准备就绪时运行代码,因此您必须省略最后一个括号。
<script type="text/javascript">
$(function() {
/* fix: “close” the value of i inside createFunction, so it won't change */
        var createFunction = function(i) {
            return function() { alert(i); };
        };

        for (var i=0; i<5; i++) {
            $('<p>').appendTo('body').on("click", createFunction(i));
}

});
</script>

点击这里,了解如何使用jQuery在DOM加载后运行代码。


@acne 嘿,它起作用了!谢谢你!有趣的是这是一个语法错误,Firebug 应该指出来...还有一件事,为什么我在浏览器中看不到任何东西?P 应该附加到 body 上,对吧? - YoniGeek
1
你必须在创建元素时使用<p>,否则它只是jQuery的普通选择器。jQuery会搜索已存在的 p 元素并尝试将其附加到 body 上。因为不存在这样的元素,所以什么也没有被附加。我更新了我的答案。 - acme
1
值得注意的是,由于您使用了HTML5 doctype,type="text/javascript"是可选的。 - superluminary

1

在我的情况下,我已经在另一个标签页中打开了Firebug,所以它向我显示了这个错误。

  • 解决方案:我关闭了一个标签页并刷新了页面,然后它就可以工作了 :)

1

移除 }) 后面的括号:

$(function() {
/* fix: “close” the value of i inside createFunction, so it won't change */
     var createFunction = function(i) {
        return function() { alert(i); };
     };

     for (var i=0; i<5; i++) {
            $('p').appendTo('body').on("click", createFunction(i));
     }    
});  //here is the modification

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接