无法触发onclick事件

can't trigger onclick event

我的 index.html 文件中有一个与功能相关的 onclick 事件:

<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: expand is not defined

我做错了什么?

问题是 DOM 中的事件处理程序正在尝试访问全局范围内可用的函数。

由于您在闭包中定义函数 expend(在 jQuery 准备好时调用的匿名函数),该函数在该范围内定义,而不是在全局范围内定义。

此外,定义这样的函数不需要等待 domReady...我建议您将声明移到该事件处理程序之外,并且仅使用它来实际执行某些操作。