如何替换div元素的内容?

问题描述 投票:1回答:2

我想在我的内容中添加多个元素(h1,输入和一些按钮)。所以我写了一个函数,我创建了h1和输入,现在我尝试将它添加到我的div内容并得到一个错误(TypeError:无法读取未定义的属性'appendChild')。这是我的代码:

let el = document.getElementById('add');
if (el) {
    el.addEventListener('click', function () {
        let rootDiv = document.getElementById('content');
        rootDiv.innerHTML = addElement();
    })
}

function addElement() {
    let h = document.createElement("H1");
    let t = document.createTextNode("Add task");
    h.appendChild(t);
    let input = document.createElement('INPUT');
    document.rootDiv.appendChild(h);
    document.rootDiv.appendChild(input);
}
javascript html byte-order-mark
2个回答
1
投票

let el = document.getElementById('add');
if (el) {
  el.addEventListener('click', function() {
    let rootDiv = document.getElementById('content');
    addElement(rootDiv);
  })
}

function addElement(rootDiv) {
  let h = document.createElement("H1");
  let t = document.createTextNode("Add task");
  h.appendChild(t);
  let input = document.createElement('INPUT');
  rootDiv.appendChild(h);
  rootDiv.appendChild(input);
}
<input type="button" id="add" value="Submit" />

<div id="content"></div>

如果您需要连续替换新内容而不是添加内容,您可以在addElement之前添加另一个清除容器的功能。检查此代码段:

let el = document.getElementById('add');
if (el) {
  el.addEventListener('click', function() {
    let rootDiv = document.getElementById('content');
    clearDiv(rootDiv); // clear container before pasting new content
    addElement(rootDiv);
  })
}

function addElement(rootDiv) {
  let h = document.createElement("H1");
  let t = document.createTextNode("Add task");
  h.appendChild(t);
  let input = document.createElement('INPUT');
  rootDiv.appendChild(h);
  rootDiv.appendChild(input);
}

function clearDiv(div) { // function for clearing rootDiv
    while (div.firstChild) {
        div.removeChild(div.firstChild);
    }
}
<input type="button" id="add" value="Submit" />

<div id="content"></div>

1
投票

没有这样的document.rootDiv你可以实现appenChild()

您可以将子项直接附加到容器元素。你不需要设置innerHTML。只需调用该功能即可。

要清除现有内容,可以在附加子项之前使用element.innerHTML = ""

let el = document.getElementById('add');;
if (el) {
  el.addEventListener('click', function () {
    addElement();
  });
}

function addElement() {
  let rootDiv = document.getElementById('content')
  rootDiv.innerHTML = "";
  let h = document.createElement("H1");
  let t = document.createTextNode("Add task");
  h.appendChild(t);
  let input = document.createElement('INPUT');
  rootDiv.appendChild(h);
  rootDiv.appendChild(input);
}
<button id="add">Add</button>
<div id="content"> <h1>Simple TODO application</h1> <a href="#addNewItem"><button id="add">Add new task</button></a> <p>TODO is empty</p> <h1></h1> 
</div>
© www.soinside.com 2019 - 2024. All rights reserved.