Javascript - 在循环中动态分配 onclick 事件

标签 javascript html events button onclick

我有一个非常简单的带有 js 代码的 html 页面:

<html>
    <head>
        <title></title>
    </head>
    <body>

        <div id="divButtons">

        </div>

        <script type="text/javascript">
            var arrOptions = new Array();

            for (var i = 0; i < 10; i++) {
                arrOptions[i] = "option" + i;
            }

            for (var i = 0; i < arrOptions.length; i++) {
                var btnShow = document.createElement("input");
                btnShow.setAttribute("type", "button");
                btnShow.value = "Show Me Option";
                var optionPar = arrOptions[i];
                btnShow.onclick = function() {
                    showParam(optionPar);
                }

                document.getElementById('divButtons').appendChild(btnShow);
            }

            function showParam(value) {
                alert(value);
            }        
        </script>
    </body>
</html>

该页面绑定(bind)了 10 个按钮,但是当您单击任何按钮时,它总是显示警告“option9”。如何分配 onclick 事件来显示相应的选项!?

谢谢!

最佳答案

你必须做这样的事情:

btnShow.onclick = (function(opt) {
    return function() {
       showParam(opt);
    };
})(arrOptions[i]);

关于Javascript - 在循环中动态分配 onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040069/

相关文章:

css - 无法让照片响应

html - 如何让 flexbox 容器只延伸到最长的内部元素?

python - urwid 中是否有焦点改变事件?

javascript - 在 JavaScript 中传递事件触发器的索引

javascript - 在 JavaScript 中描述成员和容器之间关系的最佳术语

javascript - React Native 中返回意外的 Promise

javascript - $http.post (angularjs) 中的未定义函数 : . 成功

javascript - 设备重启后,用户能否收到来自 "added to home"PWA 的推送通知?

events - Datadog 事件触发器不返回数据而不是 0

javascript - 如何使用HtmlUnit以 headless 模式运行包含Canvas的Html?