9
回答
kindeditor 是不是每次都要创建?
百度AI开发者大赛带你边学边开发,赢100万奖金,加群:418589053   
        <script>
            var editor;
            KindEditor.ready(function(K) {
                editor = K.create('textarea[name="productDesc1"]', {
                    resizeType : 1,
                    allowPreviewEmoticons : false,
                    allowImageUpload : true,
                    items : [
                        'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
                        'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
                        'insertunorderedlist', '|', 'emoticons', 'image', 'link','|', 'selectall', 'source','about']
                });
            });
            KindEditor.ready(function(K) {
                editor = K.create('textarea[name="productSpec"]', {
                    resizeType : 1,
                    allowPreviewEmoticons : false,
                    allowImageUpload : true,
                    items : [
                        'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
                        'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
                        'insertunorderedlist', '|', 'emoticons', 'image', 'link','|', 'selectall', 'source','about']
                });
            });
        </script>

我现在有两个,就要创建两个这个嘛?感觉代码重用率太低了
举报
删除
发帖于6年前 9回/1K+阅
共有9个答案 最后回答: 5年前

K.create不支持创建多个,下一个版本考虑增加。

现在可以自己封装一个函数调用就可以了。

function initKindEditor(expr) {

     // 创建编辑器

}

initKindEditor('#textarea1');

initKindEditor('#textarea2');

--- 共有 3 条评论 ---
删除回复 @Roddy : 能不能有个通过方法,在一个项目中只创建一个,然后所有的页面都调用这个 6年前 回复
Roddy回复 @红薯 : 呵呵,当时考虑到K.create返回多个对象,没有做。如果支持多个的话,需要返回数组,如果只有一个就返回对象。 6年前 回复
红薯还真是不行啊,我以为可以呢:) 6年前 回复

引用来自“Roddy”的答案

K.create不支持创建多个,下一个版本考虑增加。

现在可以自己封装一个函数调用就可以了。

function initKindEditor(expr) {

     // 创建编辑器

}

initKindEditor('#textarea1');

initKindEditor('#textarea2');

可以具体点嘛?是这样?

    function initKindEditor(textarea){
    	var editor;
        KindEditor.ready(function(K) {
            editor = K.create('textarea[name=textarea]', {
                themeType: 'simple',
                allowPreviewEmoticons : false,
                allowImageUpload : false,
                items : [
                    'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
                    'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', '|', 'emoticons', 'image', 'link','|','clearhtml','quickformat','source']
            });
        });
    }

然后怎么调用啊?

function initKindEditor(expr){
    KindEditor.ready(function(K) {
        K.create(expr, {
            themeType: 'simple',
            allowPreviewEmoticons : false,
            allowImageUpload : false,
            items : [
                'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
                'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
                'insertunorderedlist', '|', 'emoticons', 'image', 'link','|','clearhtml','quickformat','source']
        });
    });
}


然后

initKindEditor('textarea[name="productDesc1"]');

initKindEditor('textarea[name="productSpec"]');

--- 共有 1 条评论 ---
删除恩,谢谢啦,编辑器就是你开发的吧,真厉害! 6年前 回复

引用来自“Roddy”的答案

然后

initKindEditor('textarea[name="productDesc1"]');

initKindEditor('textarea[name="productSpec"]');

@Roddy  ,我现在要用<a  onclick="addProduct();">进行提交,没得到数据,我去网上查了一下,要在提交之前加上editor.sync(); 现在问题是我这个initKindEditor();是写在一个单独js文件里的,而这个方法没有返回值,如果我加上返回值的话:

function initKindEditor(expr) {
var editor = KindEditor.ready(function(K) {
	 editor = K.create('textarea[name="'+expr+'"]', {
			resizeType : 1,
                    themeType: 'simple',
                    allowPreviewEmoticons : false,
                    allowImageUpload : false,
                    items : [
                        'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
                        'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
                        'insertunorderedlist', '|', 'emoticons', 'image', 'link','|','undo','redo','fullscreen','|', 'selectall', 'source','about']
		});
	});
return editor;
}

调用:

var editor1 = initKindEditor('productDesc1');
<!-- 然后 -->
editor1.sync();

会报错。

引用来自“删除”的答案

引用来自“Roddy”的答案

然后

initKindEditor('textarea[name="productDesc1"]');

initKindEditor('textarea[name="productSpec"]');

@Roddy  ,我现在要用<a  onclick="addProduct();">进行提交,没得到数据,我去网上查了一下,要在提交之前加上editor.sync(); 现在问题是我这个initKindEditor();是写在一个单独js文件里的,而这个方法没有返回值,如果我加上返回值的话:

function initKindEditor(expr) {
var editor = KindEditor.ready(function(K) {
	 editor = K.create('textarea[name="'+expr+'"]', {
			resizeType : 1,
                    themeType: 'simple',
                    allowPreviewEmoticons : false,
                    allowImageUpload : false,
                    items : [
                        'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
                        'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
                        'insertunorderedlist', '|', 'emoticons', 'image', 'link','|','undo','redo','fullscreen','|', 'selectall', 'source','about']
		});
	});
return editor;
}

调用:

var editor1 = initKindEditor('productDesc1');
<!-- 然后 -->
editor1.sync();

会报错。

为什么我写在函数里面,在把这个函数放在事件绑定函数里面就不执行了呢?

引用来自“小败”的答案

引用来自“Roddy”的答案

K.create不支持创建多个,下一个版本考虑增加。

现在可以自己封装一个函数调用就可以了。

function initKindEditor(expr) {

     // 创建编辑器

}

initKindEditor('#textarea1');

initKindEditor('#textarea2');

可以具体点嘛?是这样?

    function initKindEditor(textarea){
    	var editor;
        KindEditor.ready(function(K) {
            editor = K.create('textarea[name=textarea]', {
                themeType: 'simple',
                allowPreviewEmoticons : false,
                allowImageUpload : false,
                items : [
                    'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
                    'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
                    'insertunorderedlist', '|', 'emoticons', 'image', 'link','|','clearhtml','quickformat','source']
            });
        });
    }

然后怎么调用啊?

为什么我写在函数里面,在把这个函数放在事件绑定函数里面就不执行了呢?
顶部