Firebug控制台,给出错误“函数未定义”


Firebug console, giving error "function not defined"

我试图通过Ajax提交表单,但它不调用函数?

我在Firebug控制台得到这个错误:

ReferenceError: CreateUser is not defined
CreateUser()

我用来调用这个函数的按钮:

<input type="button" onclick="CreateUser()" id="RegisterUserBtn" class="btn" value="Sign Up" name="">

我的函数:

<script language="JavaScript">
    $(document).ready(function(e){
        function  CreateUser(){
            alert('CreateUser SignUp button is clicked.');
        }
    });
</script>

是什么导致这个问题?为什么它找不到函数名?

你在这里混合了两种风格的javascript编码:"旧风格"与事件属性在你的html代码。和"不引人注目的javascript"与$(文档)。准备好了。我的建议是始终使用不引人注目的javascript:

不要在你的html中使用onclick。jQuery可以帮助您将所有Javascript排除在html代码之外。您已经为您的按钮创建了ID。
<input type="button"  id="RegisterUserBtn" class="btn" value="Sign Up" name="">
所以你的jQuery可以像这样:
$(document).ready(function(e) {
    function CreateUser() {
        alert('CreateUser SignUp button is clicked.');
    }
    $('#RegisterUserBtn').on('click', CreateUser);
});
这种HTML和Javascript的分离被称为"不引人注目的Javascript"。

查看现场演示:http://jsfiddle.net/bjelline/nySxm/

您通过将CreateUser函数放入匿名函数中来创建围绕它的闭包。CreateUser对于包含函数的作用域是"局部的",并且不暴露于定义onclick事件的全局作用域。

只需将函数置于$(document).ready块之外

如果你正在使用jquery,那么试试这个

<script language="JavaScript">
    $(document).ready(function(e){
       $("#RegisterUserBtn").click(function(){
            alert('CreateUser SignUp button is clicked.');
        });
    });
</script>

希望能有所帮助

如果你想在点击事件上运行CreateUser函数,然后删除$(document).ready函数并在标题内声明你的函数。$(document).ready内部的函数在内容加载之后加载。在函数声明之前加载HTML。

或者你可以在函数上使用jquery。

$(document).ready(function(e) {
   $('#RegisterUserBtn').on('click', function() {
       alert('CreateUser SignUp button is clicked.');
   });
});