替换元素内容的函数表示我的元素为null

时间:2019-10-24 22:27:35

标签: javascript html

我有一个函数,可以在div中创建一个新元素(“ father-div”),并将其附加到textNode(其中包含元素的内容)。这是达到目的的。

crossAxisAlignment: CrossAxisAlignment.end

我后来想更改该文本(我希望它是''),所以我做了这个函数,它接收要更改的元素的ID(例如:我创建的上一个“ son-id”) 。但是我收到此错误:“无法读取null的属性'replaceChild'。”

function createElement(){
    var son = document.createElement("p");
    var node = document.createTextNode("some random text");
    son.appendChild(node);
    var father = document.getElementById("father-div");
    father.appendChild(son);
    son.id = "son-id";
}

我如何让它做我想做的事,为什么这不能识别elementId?

inb4“使用innerHTML”,我无法将其用于此任务。

2 个答案:

答案 0 :(得分:0)

您正在尝试用文本节点替换元素本身,这将无法正常工作。您应该真正使用innerText;

function changeContent(elementId){ //examplo elementId="son-id"
    let element = document.getElementById(elementId);
    if(element){
        element.innerText = "";
    }
}

答案 1 :(得分:0)

您使用了错误的语法

要替换文本节点(在本例中为第一个),请使用item.childNodes [0]

其中项目是“儿子”元素

function changeContent(elementId){
      var newText = document.createTextNode(' '),
          item = document.getElementById(elementId);
      item.replaceChild(newText, item.childNodes[0]);
}

我还建议升级此功能并添加第二个参数

function changeContent(elementId, content){
      var newText = document.createTextNode(content),
          item = document.getElementById(elementId);
      item.replaceChild(newText, item.childNodes[0]);
}