2017-11-08 75 views
0

HTML/JS에서 tic-tac-toe 게임을 만들려고 노력 중입니다. 그러나 내 onclicks가 작동하지 않는 상황에서 오류가 발생했습니다. 기능이 정의되지 않았습니다. 내 clear() 함수를 jQuery로 변경하려고했지만 테스트 할 수 없습니다.자바 스크립트 오류 : HTMLTableCellElement.onclick에서 함수가 정의되지 않았습니다.

Here is a jsfiddle.

본질적으로, 그것은이 HTML

<td class="tile" id="pos1" onclick="draw(this); checkWinner();"></td> 

을 얻는 것은

var counter = 0; 
function draw(elmt){ 
    if(elmt.innerHTML == "x" || elmt.innerHTML == "o") 
    { 
     //do nothing 
    } 
    else{ 
    if(counter==0){ 
     elmt.innerHTML = "x"; 
     counter = 1; 
    } 
    else{ 
     elmt.innerHTML = "o"; 
     counter = 0; 
    } 
    } 
} 

감사합니다 자바 스크립트 기능이 인식하기!

+0

을 위해 노력하고 시도 [왜이 간단한 JSFiddle가 작동하지 않는 이유는 무엇입니까? (https://stackoverflow.com/questions/7043649/why-does-this-simple-jsfiddle-not-work) - JSFiddle은 기본적으로 이벤트 후에 제공 한 JavaScript를 실행합니다. 이것은 종종 유용하지만 함수의 범위를 변경하여'on *'속성이 그것들에 도달 할 수 없도록합니다. 설정을 변경하거나 이벤트를 바인딩하는 방법을 변경해야합니다. –

답변

0

checkWinner 함수가 정의되어 있지 않고 함수가 모두 전역 범위로 정의되어 있는지 확인하십시오. 예를 들어 window.draw()에 액세스 할 수 있어야합니다.

```

$('.tile').on('click', draw); 

function draw(e) { 
    var html = $(this).html(); 
    if(html == "x" || html == "o") 
    { 
    //do nothing 
    } else{ 
    if(counter==0){ 
     $(this).html("x"); 
     counter = 1; 
    } 
    else{ 
     $(this).html("o"); 
     counter = 0; 
    } 
    } 
} 

```

var counter = 0; 
 
function draw(elmt){ 
 
    if(elmt.innerHTML == "x" || elmt.innerHTML == "o") 
 
    { 
 
     //do nothing 
 
    } else{ 
 
     if(counter==0){ 
 
      elmt.innerHTML = "x"; 
 
      counter = 1; 
 
     } 
 
     else{ 
 
      elmt.innerHTML = "o"; 
 
      counter = 0; 
 
     } 
 
    } 
 
} 
 
function checkWinner(){ 
 

 
}
<table> 
 
<tr> 
 
<td class="tile" id="pos1" onclick="draw(this); checkWinner();"> 
 
Click Here 
 
</td> 
 
</tr> 
 
</table>

0

: 마침내

, 당신은 또한처럼 편리하게 이벤트 처리기를 바인딩 jQuery를 사용할 수 있습니다 나는 그들이 jsfiddle로 뭔가 잘못 됐음에 틀림 없다고 생각한다. 이 코드는 나를

[just remove `$(document).ready(function() {})`]