Не может вызвать событие onclick

У меня есть событие onclick в моем файле index.html, связанное с функцией:

<div class="text-center"><div class="btn btn-success expand20" onclick="expand()">Agrandir à 20</div></div>

Мой файл minesweeper.js связан с HTML следующим образом:

<script type="text/javascript" src="minesweeper.js"></script>

Моя функция expand.js определена в minesweeper.js:

$( document ).ready(function() {
    function expand() {
        for (i = 0; i < 20; i++) {
            $("table").append("<tr><td class='unopened'></td><td class='unopened'></td></tr>");
        }
    }
});

Jquery включен в конце моего HTML-файла:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

Однако, когда я нажимаю на кнопку, я получаю

Uncaught ReferenceError: расширение не определено

Что я делаю неправильно?

1 ответ

Решение

Проблема в том, что обработчики событий в DOM пытаются получить доступ к функциям, доступным в глобальной области.

Так как вы определяете функцию расход внутри замыкания (анонимная функция вызывается в jQuery ready), функция определяется в этой области, но не в глобальной области.

Кроме того, для определения таких функций не требуется ждать domReady... Я предлагаю вам переместить объявление за пределы этого обработчика событий и использовать его только для того, чтобы что-то действительно сделать.

Другие вопросы по тегам