这个克隆元素为什么不起作用?

提示这个 是因为浏览器不支持吗?
图片描述

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript">
        window.onload=function () {
            var oBtn1=document.getElementById('btn1');
            var oComment=document.getElementById('comment');
            var oComments=document.getElementsByClassName('comments');
            var newdiv=oComments.cloneNode(true);
            oComment.appendChild(newdiv);
        }
    </script>
</head>
<body>
<button id="btn1">按钮</button>
<div id="comment">
   <div class="comments">
       <div class="comments1">
         <span id="username"><a href="#">aaa</a>:</span>
         <span id="content">aaaaaaaaaaaaa</span>
       </div>
       <div class="comments2">
         <span id="time">2017</span>
       </div>
   </div>
</div>
</body>
</html>
阅读 2.4k
5 个回答

document.getElementsByClassName('comments')这个是NodeList

 var oComments=document.getElementsByClassName('comments')[0];

cloneNodeElement对象的方法,getElementsByClassName返回的是一个类数组对象,该对象并没有实现cloneNode方法。


Update:

@陌路凡歌 同学的那个答案有问题。

clipboard.png

qsa的返回值才是NodeList

getElementsByClassName返回的是数组
应该这样写
oComments[0].cloneNode(true)

图片描述

getElementsByClassName获取到的节点是数组,所以你要取第一个

getElementsByClassName获取到的是个类数组

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题