为了账号安全,请及时绑定邮箱和手机立即绑定

替换元素内容的函数是说我的元素为空

替换元素内容的函数是说我的元素为空

函数式编程 2021-12-02 19:19:33
我有一个函数,我在 div(“father-div”)中创建一个新元素并将其附加到 textNode(其中包含元素的内容)。这达到了它的目的。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";}后来我想更改该文本(我希望它是 ' '),所以我创建了这个函数来接收我想要更改的元素的 id(例如:我创建的之前的“son-id”)。但是我收到此错误:“无法读取 null 的属性‘replaceChild’”。function changeContent(elementId){ //examplo elementId="son-id"    var newText = document.createTextNode('');    var newChild = document.getElementById(elementId);    newChild.replaceChild(newText, newChild);}我怎样才能让它做我想做的事,为什么它不能识别 elementId?inb4“使用innerHTML”,我无法将其用于此任务。
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

你使用错误的语法


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


其中 item 是“儿子”元素


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]);

}


查看完整回答
反对 回复 2021-12-02
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您正在尝试用文本节点替换元素本身,这是行不通的。你真的应该使用innerText;


function changeContent(elementId){ //examplo elementId="son-id"

    let element = document.getElementById(elementId);

    if(element){

        element.innerText = "";

    }

}


查看完整回答
反对 回复 2021-12-02
  • 2 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号