2017-11-08 2 views
0

Also ich versuche, ein Tic-Tac-Toe-Spiel auf HTML/JS zu machen, jedoch meine onclicks nur irgendwie funktioniert, der Fehler, den ich jetzt bekomme, ist alles Die Funktionen sind nicht definiert. Ich habe versucht, meine clear() -Funktion in jQuery zu ändern, aber ich kann es nicht testen.Javascript Fehler: Funktion ist nicht definiert bei HTMLTableCellElement.onclick

Here is a jsfiddle.

Wesentlichen Es ist, diesen HTML bekommen

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

Um dies zu erkennen, JavaScript-Funktion

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

Thank you!

+0

[Warum funktioniert das einfache JSFiddle nicht?] (https://stackoverflow.com/questions/7043649/why-does-this-simple-jsfiddle-not-work) - JSFiddle führt standardmäßig das JavaScript aus, das Sie nach einem Ereignis bereitstellen. Dies ist oft nützlich, ändert aber den Umfang der Funktionen, so dass '' * Attribute sie nicht erreichen können. Sie müssen entweder die Einstellung ändern oder festlegen, wie Sie die Ereignisse binden. –

Antwort

0

Ihre checkWinner-Funktion ist nicht definiert, und stellen Sie sicher, dass alle Ihre Funktionen für den globalen Gültigkeitsbereich definiert sind, z. B. müssen Sie auf die zugreifen können.

Endlich können Sie auch jQuery Event-Handler bequem zu binden, wie:

`` `

$('.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

Ich schätze, sie müssen etwas falsches mit dem, was du kannst Versuchen Sie dies Ihr Code funktioniert für mich

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