我有以下(简化)代码:
<!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。
答案 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
标记,可以正常工作。我不知道为什么有些人需要一个结束标签而有些人不需要,这些元素的列表都没有,我只是从经验中知道了一些......