Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用CKEDITOR更新div?_Javascript_Ckeditor_Html - Fatal编程技术网

Javascript 如何使用CKEDITOR更新div?

Javascript 如何使用CKEDITOR更新div?,javascript,ckeditor,html,Javascript,Ckeditor,Html,我有一个页面,上面有一个div,我需要能够用几段不同的代码更新它。我在另一个div中使用onClick事件,它调用一个js函数来加载相应的代码 当我第一次打开页面时,div只有一行: <textarea name="editor1" rows="35">&lt;p&gt;Edit Area.&lt;/p&gt;</textarea> (不,我不需要使用函数。这是我试图解决问题的一次尝试。) 它工作得很好,只要它先被使用 问题发生在我将另一

我有一个页面,上面有一个div,我需要能够用几段不同的代码更新它。我在另一个div中使用onClick事件,它调用一个js函数来加载相应的代码

当我第一次打开页面时,div只有一行:

<textarea name="editor1" rows="35">&lt;p&gt;Edit Area.&lt;/p&gt;</textarea>
(不,我不需要使用函数。这是我试图解决问题的一次尝试。)

它工作得很好,只要它先被使用

问题发生在我将另一组代码加载到div中之后。此时,如果我再次尝试加载编辑器,我会得到一个错误,即未定义“editor1”。无论“editor1”是否实际上是加载到div中的新代码的一部分,都会发生错误

在我看来,Javascript不知道新加载后的新“editor1”项,因此无法进行替换

我需要能够不分青红皂白地加载任何例行程序,我需要到div在任何时候。我需要做些什么来实现这一点

谢谢

肖恩。

试试这个

var myEditorInstance = null;
function showEditor() {
    if (myEditorInstance)
        {
          myEditorInstance.destroy();
         // and if you have issues with the above you can try this ;)
         //CKEDITOR.remove(myEditorInstance);
        }

    myEditorInstance = CKEDITOR.replace( 'editor1', {height:'450'} );
}

您确定加载的html不会覆盖editor1元素吗?如果定义了新元素1,请不要使用CKEDITOR.remove,因为它是供内部使用的,不会清理DOM@阿方索姆,这确实是他们在文档中所说的,但我从OP描述中猜测,他正在替换包含编辑器的div(以及来自CK的后续动态代码),这就是导致问题的原因。。。所以应该注意CK的DOM信息。。此外,这也是他们在论坛中提出的建议,在该论坛的帖子中,会反复解释如何使用.destroy()方法。使用CKEDITOR.remove将不会处理注入页面的其他元素,如上下文菜单、对话框,对编辑器DOM元素的引用仍将保留在编辑器对象中,并带有事件侦听器。。。如果你想让你的客户端在声明浏览器正在消耗他们的内存时遇到问题,那么就这样做,或者你也可以很容易地调用destroy()方法并忘掉它。@AlfonsoML,嘿嘿。。不要激动。。该线程中的许多人提到了销毁方法的问题。。但是我同意这是推荐的方式。。我会更新我的答案好的,我意识到我可能是在错误地处理这个问题。我可以毫无问题地将页面加载到div中,因此我决定创建一个html页面,创建一个textarea,然后加载编辑器。基本的东西。所以我做了。只要它作为独立页面单独加载,它就可以工作。但是当我尝试将其加载到div中时,我得到的是textarea,而不是编辑器。知道为什么吗?
var myEditorInstance = null;
function showEditor() {
    if (myEditorInstance)
        {
          myEditorInstance.destroy();
         // and if you have issues with the above you can try this ;)
         //CKEDITOR.remove(myEditorInstance);
        }

    myEditorInstance = CKEDITOR.replace( 'editor1', {height:'450'} );
}