2014-03-26 3 views
0

내 자바 스크립트 함수를제대로

<?php 
echo "<span onclick=\"ConfirmDelete()\" data-id={$row['project_id']} class='button-content'> 
<i class='glyph-icon icon-trash-o float-left'></i> 
Delete 
</span> 
</div> 
</a> 
</li>"; ?> 

내가 data-id.It가 undefined.Any 도움을 주시면 감사하겠습니다 자꾸 얻을 수 캔트

function ConfirmDelete() 
     { 
      if (confirm("Delete Account?")) 
      var id= $(this).attr('data-id'); 
      alert(id); 
       location.href='config-project-delete.php?id='+id; 
     } 

온 클릭 이벤트 트리거를 작동하지 않습니다.

답변

0

당신은 당신의 함수에 트리거 개체를 전달할 수있는이

<span onclick="javascript:deleteConfirm('<?php echo 'config-project-delete.php?id='.$row['project_id'] ?>');" deleteConfirm class='button-content'> 

자바 스크립트를

function deleteConfirm(url) 
{ 
    if(confirm('Do you want to Delete this record ?')) 
    { 
     window.location.href=url; 
    } 
} 
+0

onclick은'javascript :'URI scheme을 호출 할 필요가 없습니다. 'href' 속성을 사용하기 만하면됩니다. – David

0

을 시도합니다.

function ConfirmDelete(triggering_object) 
     { 
      if (confirm("Delete Account?")) { 
       var id= $(triggering_object).attr('data-id'); 
       alert(id); 
       location.href='config-project-delete.php?id='+id; 
      } 
     } 

그리고 개체에 '이'를 추가 : 당신의 예에서

echo "<span onclick=\"ConfirmDelete(this);\" data-id={$row['project_id']} class='button-content'>"; 
+0

'this'가 윈도우를 반환 할 것이고, 당신이 찾고있는 것은 전달 된 파라미터가 될'event'입니다. – David

+0

사실 그는 트리거링 범위를 속성에 전달하려고하기 때문에 트리거링 범위를 찾고 있습니다. – Robin

+0

JSFiddle 작업 : http://jsfiddle.net/AefF5/ – Robin

1

, this 당신이 함수를 호출 한 요소를 참조, 오히려의 소유자를 의미하지 않습니다 함수를 정의했습니다 (전역 범위에있는 것처럼 보입니다). 그래서 당신은 같은 다음, 원하는 값의 매개 변수와 함께 함수를 호출 함수 내에서 사용해야 할 것 :

<?php 
echo "<span onclick=\"ConfirmDelete(\$(this).attr('data-id'))\" data-id={$row['project_id']} class='button-content'> 
... 

(당신이 PHP와 함께 반향하고 있기 때문에 $가 이스케이프). 이 같은

다음 함수가 보일 것이다 무언가 :

function ConfirmDelete(data_id) 
    { 
     if (confirm("Delete Account?")) 
     var id= data_id; 
     alert(id); 
      location.href='config-project-delete.php?id='+id; 
    } 

다른 곳에서는 속성 만이 목적을 위해, 당신은 전달하여 HTML 측뿐만 아니라 간단하게 할 수있는 데이터-ID를 사용하지 않는 경우 이 코드 중 하나를 테스트하지 않았습니다

<?php 
echo "<span onclick=\"ConfirmDelete('{$row['project_id']}')\" class='button-content'> 
... 

주 및 HTML을 혼합 할 때, JS, 그리고 PHP, (적어도 나를 위해)이 망치 쉬운, 그래서 조정할 수 있습니다 직접 값 필요에 따라 위의 내용을 확인하십시오.

+0

훌륭한 작업자 – user3386898

0

Nick Coons 대답은 데이터 속성 메소드 사용에 관해 처음 질문 한 결과를 얻기 위해이 작업을 수행하는 더 쉬운 방법입니다 (event). 마디. http://jsfiddle.net/2t4hK/

function ConfirmDelete(e) { 
    var target = $(e.target); 
    if (confirm("Delete Account?")) { 
     var id = target.attr('data-id'); 
     alert(id); 
     //location.href='config-project-delete.php?id='+id; 
    } 
} 

<span onclick="ConfirmDelete(event)" data-id="1" class="button-content">Delete</span> 

<?php 
    echo '<span onclick="ConfirmDelete(event)" data-id="'.$row['project_id'].'" class="button-content">'; 
    echo '<i class="glyph-icon icon-trash-o float-left"></i>Delete</span>'; 
?> 

또한, 코드에서, 나는 당신이 따옴표 안에 데이터 ID의 값을 감싸는 것이 좋습니다.