为什么我一直收到“displaymessage is not defined”错误信息?

时间:2012-02-16 02:30:03

标签: javascript jquery

任何人都可以告诉我为什么我一直在使用此代码获取“displaymessage is not defined”错误消息..提前感谢:)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TEST PAGE</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {

function displaymessage() {
    alert("Hello World!");
    }

});
</script>
</head>

<body>
<p><input type="button" name="start" id="start" value="start" onclick="displaymessage()" /></p>
</body>
</html>

3 个答案:

答案 0 :(得分:2)

范围。您的函数在onload函数的范围内声明,因此这是您能够访问它的唯一位置。要从其他位置访问它,请将其移到$(document).ready功能之外。

答案 1 :(得分:1)

您在DOM Ready回调中定义了displayMessage函数 - 这意味着它将在......好...... DOM准备就绪时定义。然而 - 你将它作为处理程序添加到点击DOM元素 - 在实际定义函数之前处理

将定义移出$(document).ready(function(){...},你就可以了。

此外,将处理程序绑定到各种DOM事件的首选方法是编程方式,而不是声明方式。您不应该在按钮中添加onclick属性,而应将整个内容重写为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

...

<script type="text/javascript">
$(document).ready(function() {

function displaymessage() {
    alert("Hello World!");
}

$('#start').on('click', displaymessage);

});
</script>
</head>

<body>
<p><input type="button" name="start" id="start" value="start"/></p>
</body>
</html>

答案 2 :(得分:0)

为什么要在文档就绪函数内写入。只是写在外面就应该这样

<script type="text/javascript">

function displaymessage() {
    alert("Hello World!");
    }


</script>