我有这样的按钮的配置列表:
var config = [{
name: 'first',
insertionConfig: {
title: 'first button',
onsubmit: function(){
// do sth
}
}
},{
name: 'second',
insertionConfig: {
title: 'second button',
onsubmit: function(){
// do sth
}
}
}
]
在我的TinyMce插件中,我想根据配置添加所有按钮。所以它最终会像这样:
tinymce.PluginManager.add('myPlugin', function(editor, url) {
for (var i in config) {
item = config[i];
editor.addButton(item.name, {
text: item.name,
onclick: function() {
editor.windowManager.open({
title: item.insertionConfig.title,
onsubmit: item.insertionConfig.onsubmit
}
};
}
});
但是当我点击第一个按钮时,它会显示第二个按钮的标题。所有按钮配置都指的是最后添加的按钮。我知道问题是关于'项目'在循环中(所有按钮引用相同的项目对象,这是最后一个)但我不知道如何解决它。
答案 0 :(得分:0)
尝试为onclick函数内的项创建一个本地范围的变量:
您遇到的问题是在实际运行该函数时如何在JavaScript中管理变量。在您单击某个项目之前,实际上不会运行click函数,此时item
指向数组中的最后一项。
编辑 :查看这个TinyMCE小提琴,看看它是如何发生的:http://fiddle.tinymce.com/REfaab/1