2013-05-24 2 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

당신은 표준 자바 스크립트 오늘에 기본 인수 값을 전달할 수 없습니다를이 무효입니다 크롬 : 당신은 무엇을해야

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 만 해당).

하모니와 함께 제공되어야합니다. 여기에 이 있습니다.

+3

올바른 ...하지만 EcmaScript 6에서 사용할 수 있습니다 –

+0

나는 몰랐다. 하지만 어떻게 Firefox에서 작동합니까? – Sasha

+0

@Sasha 그들은 ES에서 공식화되기 전에 많은 것들을 테스트하고 있으며 때로는 주류를 얻지 못합니다. 다른 예 : [Iterators] (https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Iterators_and_Generators). –

관련 문제