5

这真的让我很困惑。我在main.js文件中定义了函数,该文件加载到标题中,然后在 HTML 代码末尾调用该函数。在 Chrome 中我收到错误Uncaught ReferenceError: delete_image is not defined,但在 Firefox 中它工作正常(Opera 中出现相同的错误)。到底是怎么回事?

功能:

function delete_image(button, data = false){
    button.on('click', function(){
    var $this = $(this),
    url = $(this).attr('href');

    if( data == 'tmp' )
    {
        data = 'id=' + $this.data('id');
    }
    else if ( data == true )
    {
        data = forma.serialize();
    }

    $.confirm({
        'title'     : 'Image Delete',
        'message'   : 'Do you want to delete this image?',
        'buttons'   : {
            'Yes'   : {
                'class' : 'blue',
                'action': function(){
                    $.post(url, data,  function(){
                        $this.parent().slideUp('slow');
                    });
                }
            },
            'No'    : {
                'class' : 'gray',
                'action': function(){}
            }
        }
    });
    return false;
    });
};

调用函数(在代码的 HTML 部分之后):

<script>
    var link = $('a[role=delete]');
    delete_image(link);
</script>
4

1 回答 1

10

您今天不能在标准 javascript 中传递默认参数值,这在 Chrome 中无效:

function delete_image(button, data = false){

你应该做的是

function delete_image(button, data){
    if (data == undefined) data=false;

MDN详细说明了您可以在哪些浏览器中使用此功能(答案:仅限 Firefox)。

Harmony 应该可以使用此功能。这里有一些关于 ES6 计划的细节

于 2013-05-24T14:57:16.630 回答