如何替换div元素的内容?

时间:2018-09-06 14:45:13

标签: javascript html byte-order-mark

我想在我的内容中添加多个元素(h1,input和一些按钮)。所以我写了一个函数,在其中创建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);
}

2 个答案:

答案 0 :(得分: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 :(得分: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>