我有很多按钮,我想以编程方式为每个按钮添加一个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));
怎么样
for (var i = 0; i < 10; i++) {
on(dom.byId("button"+ i), "click", (function(number){
return function(e) {
console.log("Number: "+ number);
};
})(i));
}
您可以通过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/