Ссылка Ошибка при использовании onclick на сайте codeandbox

Я пишу программу Vanilla JS в среде кодов и ящиков, как показано ниже:

function Game() {
  alert("hi");
}
body {
  font-family: sans-serif;
}

table {
  border-collapse: collapse;
}

td {
  border: 1px solid black;
}

td:first-child {
  border-left-width: 0px;
}

td:last-child {
  border-right-width: 0px;
}

table tr:nth-child(1) td {
  border-top-width: 0px;
}

table tr:nth-child(3) td {
  border-bottom-width: 0px;
}
<!DOCTYPE html>
<html>
  <head>
    <title>Tic-Tac-Toe</title>
    <meta charset="UTF-8" />
    
  </head>

  <body>
    <div id="app">
      <table width="300" height="300" onclick="Game();">
        <tr>
          <td></td>
          <td></td>
          <td></td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td>
        </tr>
      </table>
    </div>
  </body>
</html>

Когда я выполняю приведенный выше фрагмент кода в codesandbox.io, он выдает следующую ошибку:

ReferenceError Game не определена

Не уверен, почему среда выполнения codesandbox не может обнаружить Game функция. Если я напишу alert оператор за пределами функции, тогда он успешно вызывается при загрузке страницы:

alert("hi");

function Game() {

}

Я правильно связал внешние файлы JS и CSS в теге head страницы HTML.

0 ответов

Вы должны определить функцию как переменную, присоединенную к глобальной window объект. Попробуйте определить функцию следующим образом:

window.Game = function() {
  alert("hi");
}

Альтернативно, вместо встроенного onclick обработчик событий попробуйте дать table элемент идентификатор, такой как game-table а затем добавьте прослушиватель событий:

document.querySelector('#game-table').addEventListener('click', Game);
Другие вопросы по тегам