新添加的DOM元素返回null

Newly added DOM element returns null

本文关键字:DOM 元素 返回 null 添加 新添加      更新时间:2023-09-26

我在运行时向时序文档添加一个span。

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子元素将其添加到DOM。

问题是我不能找到新添加的元素使用:

document.getElementById("caret");

返回null。为什么会发生这种情况?知道我能做什么吗?

EDIT:我使用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()

如果您需要全局访问,您可以使用TinyMCE.editors集合来访问特定的编辑器