【问题标题】:JavaScript loop inside tinymce buttontinymce 按钮内的 JavaScript 循环
【发布时间】:2019-05-18 16:42:03
【问题描述】:

我的 JavaScript 循环在 tinymce 按钮内无法正常工作。

我设置了一个变量 n,它是我从 html 输入中获得的数组大小。

var n = $('#total').val();

然后,我创建 tinymce 按钮数组:var menuItems = [];

在我的 tinymce 编辑器初始化中,我创建了按钮:

editor.on('init', function (e) {

        for (var i=1; i<=n; i++){
            var obj = {
                text: 'Item ' + i,
                onclick: function() {
                    var msg = '&nbsp;<strong>#item' + i + '#</strong>&nbsp;';
                    editor.insertContent(msg);
                }
            }
            menuItems.push(obj);
        }
    });

最后一步是将 menuItems 添加到 tinymce 按钮:

editor.addButton('myButton', {
        type: 'menubutton',
        text: 'Items',
        icon: false,
        menu: menuItems 
    });

按钮显示正确,标签正确。我有按钮:

项目 1 第 2 项 第 3 项

但是,无论我点击哪个按钮,编辑器中显示的文本都是 item3。它总是得到最后一个按钮文本。 有谁知道为什么会这样?

谢谢

【问题讨论】:

    标签: javascript arrays tinymce


    【解决方案1】:

    使用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 = '&nbsp;<strong>#item' + i + '#</strong>&nbsp;';
            editor.insertContent(msg);
          }
        }
        menuItems.push(obj);
      }
    });
    

    这里是documentation on let

    【讨论】:

      猜你喜欢
      • 2018-05-02
      • 2013-07-17
      • 1970-01-01
      • 2016-11-01
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 2021-12-25
      相关资源
      最近更新 更多