我正在编写一个用于Wordpress的TinyMCE插件,我只是遇到了一个关于我如何处理事情的问题。基本上,我正在使用一个依赖于计数器i
的循环。循环负责构建一个包含TinyMce细节的数组。其中一个是函数调用,它通过i
计数器。
但是当然,在点击实际注册时,该计数器始终处于最大值。我在循环中使用let
暂时解决了这个问题。这是循环:
for(let i = 0; i <= pmsb.config.length - 1; i++) {
menu[i] = {
text: pmsb.config[i].title,
onclick: function() {
open_dialog(i);
}
}
}
我知道let
没有得到很好的支持,而且这是一个Wordpress插件,我无法真正控制目标受众使用的浏览器。
因此,在上述循环的情况下 - 如何使函数调用接收正确的数字(如let
那样)?
答案 0 :(得分:3)
而不是forEach
循环,而是使用pmsb.config.forEach(function(config, i) {
menu[i] = {
text: config.title,
onclick: function() {
open_dialog(i);
}
}
});
- 生成的回调将自动接收索引作为将在范围内正确绑定的参数:
pmsb.config[i]
如果(似乎很可能)存在从menu[i]
到.map
的一对一映射,您最好仍然使用forEach
代替var menu = pmsb.config.map(function(config, i) {
return {
text: config.title,
onclick: function() {
open_dialog(i);
}
}
});
:
{{1}}