问题描述
|
这是我的HTML / JavaScript:
<!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>Untitled Document</title>
<script type=\"text/javascript\" src=\"/script/jquery.js\"></script>
<script type=\"text/javascript\">
$(function(){
var $str = \"hello world\";
function foo() {
alert($str);
}
});
</script>
</head>
<body>
<form name=\"statusUpdateForm\" method=\"post\">
<input type=\"button\" name=\"submitButton\" value=\" \" onclick=\"foo();\" />
</form>
</body>
</html>
单击按钮时,出现JavaScript错误,指出未定义foo。如何调用在document.ready()内部声明的JavaScript函数?
解决方法
基本上,您是将函数的作用域放在另一个函数中。
图片如下:
<script>
document.onload = function(){
function foo(){
alert(\'bar\');
}
};
foo();
</script>
这就是您要完成的工作的传真。就像在函数中定义的变量超出其范围之外,函数名称具有相同的特征。
旁注JavaScript变量名不需要$前缀(尽管就名称而言是可接受的)。我不知道您是否来自PHP,只是习惯或知道。
以为我会把我的评论当作答案。
,尝试这个:
$(function() {
window.foo = function () {
alert(\'bar\');
}
});
基本上,您需要将函数公开给全局范围。
,$(function()函数内部声明的变量和方法只能在其中访问。如果需要在外部使用,则可以在全局名称空间中进行设置,例如
window.functionName = functionName;
,您不能,它对那个范围是私有的。
,我最终要做的事情-首先应该做的事情-为提交按钮添加了一个点击处理程序:
$(\"input[name=\'submitButton\']\").click(function(){...});