克隆元素未显示

时间:2017-04-01 08:32:03

标签: javascript html clone

以下代码应克隆给定元素并在以下后插入:

function cloneMore(element) {
    var newElement = element.cloneNode(true);
    element.parentNode.insertBefore(newElement, element.nextSibling);
}
var addChoice = document.getElementById("add-choice")
addChoice.onclick = (function(){cloneMore(document.getElementById("choices").lastChild);})

html看起来像这样:

<ul id="choices">
    <!-- form elements -->
</ul>
<p><a id="add-choice">Add another choice</a></p>

没有抛出异常,一切都在执行,但我看不到新元素。为什么呢?

1 个答案:

答案 0 :(得分:2)

lastChild选择所有节点类型,而不仅仅是Elements。所以你可能正在克隆一个TextNode \n

我猜你想要的是lastElementChild

function cloneMore(element) {
  var newElement = element.cloneNode(true);
  element.parentNode.insertBefore(newElement, element.nextSibling);
}
var addChoice = document.getElementById("add-choice")
addChoice.onclick = function() {
  var choices = document.getElementById("choices");
  cloneMore(choices.lastElementChild); // only Elements
  console.log('lastChild type : ', choices.lastChild.nodeName); 
}
<ul id="choices">
  <li> choice </li>
</ul>
<p><a href="#" id="add-choice">Add another choice</a></p>