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 に答える