Javascript 新添加的DOM元素返回null
我正在运行时向tinymce文档添加一个跨度Javascript 新添加的DOM元素返回null,javascript,dom,tinymce,getelementbyid,Javascript,Dom,Tinymce,Getelementbyid,我正在运行时向tinymce文档添加一个跨度 ed.onKeyUp.add(function (ed, e) { sendText(ed, e); ed = tinyMCE.get('editor'); range = ed.selection.getRng(); var newNode = ed.getDoc().createElement("span"); newNode.id = "caret"; ed.getDoc().body.appendChil
ed.onKeyUp.add(function (ed, e) {
sendText(ed, e);
ed = tinyMCE.get('editor');
range = ed.selection.getRng();
var newNode = ed.getDoc().createElement("span");
newNode.id = "caret";
ed.getDoc().body.appendChild(newNode);
newNode.innerHTML = "|";
newNode.style.color = "black";
range.insertNode(newNode);
});
如您所见,我使用createElement方法添加节点,并使用append child将其添加到DOM中,以添加到所需的元素中
问题是,我无法使用以下命令找到新添加的元素:
document.getElementById("caret");
它正在返回null。为什么会这样?知道我能做什么吗
编辑:我正在使用document.getElementById(“插入符号”);在初始化tinyMCE文档时调用的函数中,因为我需要此函数来闪烁自定义插入符号
这就是功能:
function blink() {
var caret = document.getElementById("caret");
if (caret.style.color == "transparent") {
caret.style.color = "black"
} else {
caret.style.color = "transparent";
}
}
我把它称为oninit:setInterval(“blink()”,700),其中oninit是tinyMCE的一个参数。tinyMCE使用一个包含自己文档的iframe来允许编辑 因此,当您使用
document.getElementById
时,您正在搜索错误的DOM
如果您有权访问TinyMCE编辑器对象,则可以使用ed.getDoc().getElementById()
如果需要全局访问,可以使用集合访问特定编辑器。插入节点后是否调用
document.getElementById(“插入符号”)
?ed.getDoc().getElementById(“插入符号”)
有效吗?我不认识其中一些(ed.onKeyUp.add
,ed.getDoc()
…)。你在使用某种JavaScript库吗?@scott.korin:是TinyMCEI我猜她在用Tinymcey是的我在用tinyMCE。。让我编辑这篇文章,并告诉你我从哪里打电话给GetElementById谢谢你的回答!没错,你说得有道理!但是我的blink()函数必须是全局函数才能访问,因此我没有访问ed的权限!