首页 > 解决方案 > 限制插件中创建的元素javascript的数量

问题描述

我在我的论坛中使用sceditorbbcode,一切正常,直到我遇到这个问题。

使用下一个代码(仅粘贴),我创建了一个表情符号下拉列表来选择一个特定的表情符号。

问题是我只想将 4 行表情符号显示为 maxinum..and(不创建存储在表情符号数据库中的其余部分(280 个表情符号),否则此代码会创建所有 280 个表情符号并减慢我的网站。

   // START_COMMAND: Emoticons
    emoticon: {
        exec: function (caller) {
            var editor = this;

            var createContent = function (includeMore) {
                var moreLink,
                    opts            = editor.opts,
                    emoticonsRoot   = opts.emoticonsRoot || '',
                    emoticonsCompat = opts.emoticonsCompat,
                    rangeHelper     = editor.getRangeHelper(),
                    startSpace      = emoticonsCompat &&
                        rangeHelper.getOuterText(true, 1) !== ' ' ? ' ' : '',
                    endSpace        = emoticonsCompat &&
                        rangeHelper.getOuterText(false, 1) !== ' ' ? ' ' : '',
                    content         = createElement('div'),
                    line            = createElement('div'),
                    perLine         = 0,
                    emoticons       = extend(
                        {},
                        opts.emoticons.dropdown,
                        includeMore ? opts.emoticons.more : {}
                    );

                appendChild(content, line);

                perLine = Math.sqrt(Object.keys(emoticons).length);

                on(content, 'click', 'img', function (e) {
                    editor.insert(startSpace + attr(this, 'alt') + endSpace,
                        null, false).closeDropDown(true);

                    e.preventDefault();
                });

                each(emoticons, function (code, emoticon) {
                    appendChild(line, createElement('img', {
                        src: emoticonsRoot + (emoticon.url || emoticon),
                        alt: code,
                        title: emoticon.tooltip || code
                    }));

                    if (line.children.length >= perLine) {

                        line = createElement('div');
                        appendChild(content, line);

                    }
                });

                if (!includeMore && opts.emoticons.more) {
                    moreLink = createElement('a', {
                        className: 'sceditor-more'
                    });

                    appendChild(moreLink,
                        document.createTextNode(editor._('More')));

                    on(moreLink, 'click', function (e) {
                        editor.createDropDown(
                            caller, 'more-emoticons', createContent(true)
                        );

                        e.preventDefault();
                    });

                    appendChild(content, moreLink);
                }

                return content;
            };

            editor.createDropDown(caller, 'emoticons', createContent(false));
        },
        txtExec: function (caller) {
            defaultCmds.emoticon.exec.call(this, caller);
        },
        tooltip: 'Insert an emoticon'
    },
    // END_COMMAND

我试图限制下一行,但它不起作用,它破坏了 js 代码。

      if (line.children.length >= perLine) {
                    if (line.children.length <= 4) { //added line

                        line = createElement('div');
                        appendChild(content, line);
                    }   
                    }

我只想在 js 代码中解决这个问题。有几行,我认为线索在appendChild()做错了什么?

标签: javascript

解决方案


推荐阅读