导入jQuery后,JavaScript函数“未定义”

时间:2012-12-18 12:38:22

标签: javascript jquery

我有以下(简化)代码:

<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test</title>

        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js" />

        <script language="javascript" type="text/javascript">
            function testFunction() {
                alert('It works');
            }
        </script>
    </head>
    <body>
        <form method="post" action="test.html" onsubmit="testFunction()">
            <input type="submit" value="Test" />
        </form>
    </body>
</html>

我的testFunction()函数可以正常工作,直到我用行导入jQuery

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js" />

现在它失败并告诉我 未捕获的ReferenceError:未定义testFunction

我希望这是一个新手的错误,我错过了一些明显的东西。请注意,我甚至还没有尝试使用jQuery。

4 个答案:

答案 0 :(得分:7)

您需要完全关闭<script>标记。

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

更改后在jsfiddle上运行得很好: http://jsfiddle.net/PVYM9/

此外,在HTML5中,您可以将文档类型缩短为<!DOCTYPE html>,而无需为type标记定义<script>属性。例如,请参阅jsfiddle。

答案 1 :(得分:2)

您必须以正确的方式关闭脚本标记

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

(请注意结束</script>代码)

答案 2 :(得分:1)

   <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> // close the script tag properly

        <script type="text/javascript"> // there is no need of writing language="javascript"
            function testFunction() {
                alert('It works');
            }
        </script>

嘿,man不需要编写language =“javascript”,因为类型已经指定了它!

答案 3 :(得分:1)

尽管是有效的XML,但如果使用尾部斜杠(即script关闭它们,许多HTML元素(例如textarea<element />等)在大多数浏览器中都无法正常工作)。您需要为它们创建开放和关闭标记(<element></element>)。对于XHTML来说似乎也是如此。

其他人,例如您的input标记,可以正常工作。我不知道为什么有些人需要一个结束标签而有些人不需要,这些元素的列表都没有,我只是从经验中知道了一些......