0

我有许多按钮,我想以编程方式为每个按钮添加一个 onclick 函数。我希望这些函数知道它们附加到哪个按钮编号,但我不想解析按钮 ID 来获取数字。肯定有更好的办法:

    require(["dojo/dom", "dojo/domReady!", "dojo/on"], function(dom, domReady, on) {
        for (var i = 0; i < 10; i++) {
            on(dom.byId("button"+ i), "click", function(e) {
                console.log("Number: "+ i);
            });
        }
    });

如何添加一个函数以便它正确输出按钮编号而不执行此操作:

console.log("Number: "+ e.srcElement.id.substring(6));
4

2 回答 2

4

怎么样

for (var i = 0; i < 10; i++) {
    on(dom.byId("button"+ i), "click", (function(number){
        return function(e) {
            console.log("Number: "+ number);
        };
    })(i));
}
于 2012-08-26T08:57:25.093 回答
3

您可以通过以下方式实现相同的目的dojo/_base/lang::partial

require([
    "dojo/_base/lang",
    "dojo/dom",
    "dojo/on",
    "dojo/domReady!"
], function(
    lang,
    dom,
    on
) {

    var button_onClick = function(i, event) {
        console.log("Number:", i);
    }

    for (var i = 1; i <= 3; i++) {
        on(dom.byId("button" + i), "click", lang.partial(button_onClick, i));
    }

});​

在 jsFiddle 上查看一个工作示例:http: //jsfiddle.net/phusick/KhsXB/

于 2012-08-26T16:22:37.793 回答