如何在使用纯JavaScript附加后获取html元素?

时间:2017-11-21 22:37:47

标签: javascript html dom ckeditor

我发现了一些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功能。)

1 个答案:

答案 0 :(得分:1)

尝试更改代码以将调用包裹在CKEDITOR.replace

中的setTimeout
setTimeout(function() {
  CKEDITOR.replace(inputID).setData('Type anything you want ...');
},0).

这将允许浏览器在尝试替换元素之前插入元素。

我认为inputID中有一个有效值......