我找到了一些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会将JS的选中复选框从选中状态设置为未选中状态,这是我的主要问题是尝试使用附加DOM函数)。
最佳答案
尝试更改代码以将对CKEDITOR.replace
的调用包装在setTimeout
中:
setTimeout(function() {
CKEDITOR.replace(inputID).setData('Type anything you want ...');
},0).
这将使浏览器有时间在尝试替换元素之前插入该元素。
我认为
inputID
中有一个有效值...