1

我的 HTML 文件:

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" />
        <script src="script.js" type="text/javascript"></script>
    </head>
    <body>
        <form name="someForm">
            <input type="button" value="Click me" onClick="myFunction()" />
        </form>
        <div id="result"></div>
    </body>
</html>

我的 script.js 文件:

function myFunction(){
    $("#result").html("BUTTON WORKS");
}

我有 Firebug,每当我单击按钮时,Firebug 都会向我抛出此错误:

ReferenceError: myFunction 未定义

我究竟做错了什么?

4

4 回答 4

2

script不能是 HTML 中的自闭合标签(它适用于某些浏览器,具体取决于文档类型,但它不正确)。您必须添加一个结束标签。

代替

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" />

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

由于此错误,指向您的脚本的脚本元素可能未正确解析。

规范

脚本元素必须同时具有开始标记和结束标记。

块引用

于 2012-11-19T20:36:24.720 回答
1

可能是由于文件参考问题。

将事件附加在 js 文件中而不是 HTML 中是一种更好的做法。

<form name="someForm">
    <input type="button" id="btn" value="Click me" />
</form>


$('#btn').on('click', function(){
    $("#result").html("BUTTON WORKS");
});
于 2012-11-19T20:36:04.453 回答
1

您是在本地(file://地址栏中有)还是从某个服务器(http://地址栏中的协议)打开该文件?因为如果您在本地打开文件,您实际上会尝试从地址加载 jquery:

文件://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js

这是不正确的。发生这种情况是因为您使用//ajax.googleapis.com/...as 地址,它引用与当前打开的页面相同的协议。

将其更改为:

http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js

将您的文件上传到某个服务器(甚至在本地安装一个)并通过完整的 http 请求对其进行测试。

于 2012-11-19T20:55:25.363 回答
1

我通过结合@Susbanth、@MBO 和@dystroy 的答案解决了这个问题。

这是我的新 HTML 文件:

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script src="script.js" type="text/javascript"></script>
    </head>
    <body>
        <form name="someForm">
            <input type="button" value="Click me" />
        </form>
        <div id="result"></div>
    </body>
</html>

我在 jQuery 源代码中添加了“http”,关闭了标签,并从 HTML 中删除了“onClick”。

这是更新后的 script.js 文件:

$(document).ready(function(){
    $("input[type=button]").on("click",function(){
        $("div#result").html("BUTTON WORK");
    });
});

我将 onClick 事件设为 jQuery 事件。

于 2012-11-19T21:03:11.973 回答