我发现了一些JQuery解决方案,但我受限于使用纯Javascript的学校任务限制,我需要使用仍然不在DOM中的特定早期附加元素来替换我的CKEDITOR。
代码:
function newOption(){
...
mainUL = document.getElementById("myUL");
var inputA = document.createElement("input");
inputA.type ="text";
inputA.style = "margin-right: 45px";
inputA.name = "option[]";
inputA.id = inputID;
mainUL.appendChild(inputA );
CKEDITOR.replace(inputID).setData('Type anything you want ...');
...
}
通过用CKEDITOR替换我的输入,JS会失败,因为输入通常仍然不在DOM中。我试着用
mainUL.innerHTML += "all elements like html text";
这是有效的,会立即将元素插入到DOM中,但是我不能使用innerHTML,因为它会删除旧的侦听器(例如,JS将从checked设置为unchecked的复选框,我的主要问题是什么?我必须尝试使用追加DOM功能。)
答案 0 :(得分:1)
尝试更改代码以将调用包裹在CKEDITOR.replace
:
setTimeout
setTimeout(function() {
CKEDITOR.replace(inputID).setData('Type anything you want ...');
},0).
这将允许浏览器在尝试替换元素之前插入元素。
我认为inputID
中有一个有效值......