亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

替換元素內容的函數是說我的元素為空

替換元素內容的函數是說我的元素為空

函數式編程 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 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號