createElement和createDocumentFragment区别

用法举例

createElement

var createElementEg = document.createELement('div');
// 添加元素方法1:innerHTML
createElementEg .innerHTML = '<span>this is createELement eg</span>';
var ele = document.getElementById('test');
// 添加元素方法2:appendChild
createElementEg.appendChild(ele);

createDocumentFragment

var createDocumentFragmentEg = document.createDocumentFragment();
var ele = document.getElementById('test');
// 添加元素方法2:appendChild
createDocumentFragmentEg.appendChild(ele);

共同点

  • 添加子元素后返回值都是新添加的子元素,因此,可通过下面的方法利用innerHTMLcreateDocumentFragment添加子元素:
  var fragment = document.createDocumentFragment();
  var ret = fragment.appendChild(document.createElement('div'));
  ret.innerHTML = 'by innerHTML ';
  test1.appendChild(fragment);
  • 都可以通过appendChild添加子元素,且子元素必须是node类型,不能为文本。
  • 若添加的子元素是文档中存在的元素,则通过appendChild在为其添加子元素时,会从文档中删除之前存在的元素。

区别

  • createElement创建的是元素节点,节点类型为1,createDocumentFragment创建的是文档碎片,节点类型是11
  • 通过createElement新建元素必须指定元素tagName,因为其可用innerHTML添加子元素。通过createDocumentFragment则不必。

  • 连续将通过createElement新建的元素添加到其他元素上,则只会将新建的元素添加到最后一个其他元素上,即下面的test2上,程序会报错。

   var createElement = document.createElement('div');
    createElement.appendChild(textCreateElement);
    test1.appendChild(createElement );
    test2.appendChild(createElement );
  • 而连续将通过createDocumentFragment新建的元素通过appendChild添加到其他元素上,则只会将新建的元素添加到第一个其他元素上,即下面的test1上,程序会报错。
 var fragment = document.createDocumentFragment();
  fragment.appendChild(testfragment);
  test1.appendChild(fragment);
  test2.appendChild(fragment);
  • 通过createElement创建的元素是直接插入到文档中,而通过createDocumentFragment创建的元素插入到文档中的是他的子元素。
  • 通过createElement创建的元素插入文档后,还可以取到创建时的返回值,即上面例子中createElement还是创建的那个div元素,而createDocumentFragment创建的元素插入到文档后,就不能访问创建时的返回值了,相当于把自己创建的文档片段直接挪到文档中了。
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值