2013-05-24 11 views
5

これは本当に困惑しています。私はmain.jsファイルで定義された関数を持っています。これはヘッダにロードされています。そして、後者はHTMLコードの最後にこの関数を呼び出しています。 Chromeでエラーが発生しましたUncaught ReferenceError:delete_imageはと定義されていませんが、Firefoxでは正常に動作しています(同じエラーがOperaに表示されます)。何が起こっている?Jquery 1.9、JS - 関数はChromeで定義されていません

機能:(コードのHTML部分の後に)関数の呼び出し

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; 
    }); 
}; 

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

これは、データを使っていくつかの異なるタイプを表現しているようです。それを単一のタイプとして使用するようにしてください。さらに、それは素晴らしい変数名ではなく、 'confirm'関数の中でその変数にアクセスできなくなります。その変数を使っていることをよりよく表す名前を思いついてみてください。 –

答えて

10

あなたは標準のJavaScript今日のデフォルト引数値を渡すことはできませんが、これはでは無効ですクロム:あなたは何をすべき

function delete_image(button, data = false){ 

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

MDN precises in what browsers you can use this feature(答え:Firefoxのみ)。

これはHarmonyで利用できるはずです。ここにはがあります。

+3

正しい...しかし、それはEcmaScript 6で利用可能になりますが、 –

+0

私はそれを知らなかった。しかし、どのようにFirefoxで動いていますか? – Sasha

+0

@Sasha彼らはESで公式になる前に多くのことをテストしていますが、時には主流になることもありません。別の例:[イテレータ](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Iterators_and_Generators)。 –

関連する問題