我有一个函数,可以在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”,我无法将其用于此任务。
答案 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]);
}