TypeError: showAddressDialog不是函数

TypeError: showAddressDialog is not a function

本文关键字:函数 showAddressDialog TypeError      更新时间:2023-09-26

我通常能看到这些错误的问题,但这次我就是看不出问题是什么。

这是javascript:

<script type="text/javascript">
        function showAddressDialog(aid,cno) {
            jQuery('#dialog-form').load('Includes/AddressDialog.aspx', {"AddressID":aid, "Cont_no":cno}, function() {});
            jQuery( '#dialog-form' ).dialog({
                modal: true,
                width: 750,
                height: 550,
                title: 'Addresses',
                buttons: {
                    'Close': function() {
                        jQuery( this ).dialog( 'close' );
                    }
                }
            });
        };
</script>

这是一个调用函数的html按钮:

<input name="showAddressDialog" id="showAddressDialog" type="button" value="Show Addresses" onclick="showAddressDialog('1299','0')" />

谢谢你的帮助。

此错误表示解释器没有看到函数的定义。在调用函数之前,您需要将该脚本块移动到body标记的末尾,或者将整个函数包装在"立即调用函数"中,并在元素上添加单击事件处理程序,如

(function() {
    jQuery("#showAddressDialog").click(function() {
        showAddressDialog('1299', '0');
    });
    function showAddressDialog(aid,cno) {
        jQuery('#dialog-form').load('Includes/AddressDialog.aspx', {"AddressID":aid, "Cont_no":cno}, function() {});
        jQuery( '#dialog-form' ).dialog({
            modal: true,
            width: 750,
            height: 550,
            title: 'Addresses',
            buttons: {
                'Close': function() {
                    jQuery( this ).dialog( 'close' );
                }
            }
        });
    };
})();

您需要将其包装在另一个函数中的原因如下

jQuery("#showAddressDialog").click(function() {
        showAddressDialog('1299', '0');
});

是because,这样就可以将参数传递给even处理程序。如果事件处理程序不需要任何额外的参数,则只需将该事件处理程序添加到input元素中,如下所示

jQuery("#showAddressDialog").click(showAddressDialog);