JavaScript 在 tinymce 按钮内循环
JavaScript loop inside tinymce button
我的 JavaScript 循环在 tinymce 按钮内无法正常工作。
我设置了一个变量 n,它是我从 html 输入中获得的数组大小。
var n = $('#total').val();
然后,我创建了 tinymce 按钮数组:var menuItems = [];
在我的 tinymce 编辑器 init 中,我创建了按钮:
editor.on('init', function (e) {
for (var i=1; i<=n; i++){
var obj = {
text: 'Item ' + i,
onclick: function() {
var msg = ' <strong>#item' + i + '#</strong> ';
editor.insertContent(msg);
}
}
menuItems.push(obj);
}
});
最后一步是将菜单项添加到 tinymce 按钮:
editor.addButton('myButton', {
type: 'menubutton',
text: 'Items',
icon: false,
menu: menuItems
});
按钮显示正确,标签正确。我有按钮:
项目 1
第 2 项
项目 3
但是,无论我点击哪个按钮,编辑器中显示的文本都是item3。它总是得到最后一个按钮文本。
有谁知道为什么会这样?
谢谢
使用 let
而不是 var
,因为 let
会保持其 词法块作用域 而 var
不会:
editor.on('init', function(e) {
for (let i = 1; i <= n; i++) { // <-- use let here
var obj = {
text: 'Item ' + i,
onclick: function() {
var msg = ' <strong>#item' + i + '#</strong> ';
editor.insertContent(msg);
}
}
menuItems.push(obj);
}
});
我的 JavaScript 循环在 tinymce 按钮内无法正常工作。
我设置了一个变量 n,它是我从 html 输入中获得的数组大小。
var n = $('#total').val();
然后,我创建了 tinymce 按钮数组:var menuItems = [];
在我的 tinymce 编辑器 init 中,我创建了按钮:
editor.on('init', function (e) {
for (var i=1; i<=n; i++){
var obj = {
text: 'Item ' + i,
onclick: function() {
var msg = ' <strong>#item' + i + '#</strong> ';
editor.insertContent(msg);
}
}
menuItems.push(obj);
}
});
最后一步是将菜单项添加到 tinymce 按钮:
editor.addButton('myButton', {
type: 'menubutton',
text: 'Items',
icon: false,
menu: menuItems
});
按钮显示正确,标签正确。我有按钮:
项目 1 第 2 项 项目 3
但是,无论我点击哪个按钮,编辑器中显示的文本都是item3。它总是得到最后一个按钮文本。 有谁知道为什么会这样?
谢谢
使用 let
而不是 var
,因为 let
会保持其 词法块作用域 而 var
不会:
editor.on('init', function(e) {
for (let i = 1; i <= n; i++) { // <-- use let here
var obj = {
text: 'Item ' + i,
onclick: function() {
var msg = ' <strong>#item' + i + '#</strong> ';
editor.insertContent(msg);
}
}
menuItems.push(obj);
}
});