给多个按钮注册事件的问题

代码如下:
for(var i=1;i<=8;i++){
var bt_jiedian=cc.find(“Canvas/dantian/center/p”+i).getComponent(cc.Sprite);
bt_jiedian.node.on(cc.Node.EventType.TOUCH_END, function (event) {
this.btn_jiedian_click(i);
}, this);
}
我想在onload里边给8个按钮注册相同事件,但是我在btn_jiedian_click里边接收到的i都是9,请问怎么办?

解决了,分解代码,在onload阶段
for(var i=1;i<=8;i++){
this.reg_click(i);
}
然后申明一个function如下:
reg_click(i){
var bt_jiedian=cc.find(“Canvas/dantian/center/p”+i).getComponent(cc.Sprite);
bt_jiedian.node.on(cc.Node.EventType.TOUCH_END, function (event) {
this.btn_jiedian_click(bt_jiedian);
}, this);
},

因为你的i是全局变量,function调用时i已经变成9了;
你可以在for循环里使用局部变量去代替i;
例如 let idx=i;用idx代替i就可以了

多谢,多谢。let正好解决我function内部,防止var污染