㈠添加元素的步骤

⑴创建空元素

⑵设置关键属性

⑶将元素添加到DOM树

 

㈡创建空元素

var elem = document.createElement('table');

 

示例:

var table = document.createElement('table');
var tr = document.createElement('tr');
var td = document.createElement('td');
var td = document.createElement('td'); console.log(table);

 

㈢设置关键属性

a.innerHTML = "go to tmooc"

a.herf = "http://tmooc.cn";

<a href = "http://tmooc.cn">go to tmooc</a>

 

㈣设置关键样式

a.style.opacity = "1";

a.style.csssText = "width:100px;height:100px";

 

㈤将元素添加到DOM树

第一种方法:
parentNode.appendChild(childNode)

可用于将为一个父元素追加最后一个子节点

 

示例:

var div = document.createElement('div');
var txt = document.createTextNode('版权声明'); div.appendChild(txt);
document.body.appendChild(div);

 

第二种方法:
parentNode.insertBefore(newChild,existingChild)

用于在父元素中的指定子节点之前添加一个新的子节点

 

示例:

<ul id = "menu">
<li>首页</li>
<li>联系我们</li>
</ul> var ul = document.getElementById('menu');
var newLi = document.createElement('li'); ul.inserBefore(newLi,ul.lastChild);

 

㈥添加元素优化

①尽量少的操作DOM树

①为什么?

每次修改DOM树,都导致重新layout

⑴如果同时创建父元素和子元素时,建议在内存条中先将子元素添加到父元素,再将父元素一次性挂到页面

⑵如果只添加多个平级子元素时,就要将所有子元素,临时添加到文档片段中。再将文档片段整体添加到页面

 

②文档片段中:内存中,临时保存多个子元素的虚拟父元素。用法和普通父元素完全一样

如何?

⑴创建片段

var frag = document.createDocumentFragment();

 

⑵将子元素临时追加到frag中

frag.appendChild(child);

 

⑶将frag追加到页面 

parent.appendChild(frag);

 

 强调:append之后,frag自动释放,不会占用元素

DOM添加的更多相关文章

  1. DomFlags - 给 DOM 添加书签,方便调试

    DomFlags 所以一款 Chrome 浏览器扩展程序提,供了一种新的方式与浏览器开发者工具互动.DomFlags 让你可以给 DOM 元素创建快捷键,就像用于导航 DOM 树的书签.它们可以帮助您 ...

  2. zepto | 用事件委托去解决无法给新增添的DOM添加事件的问题

    前段时间在做一个任务的时候,碰见了一个问题:zepto无法用on事件去监听新增加的dom事件.这个问题用live可解决, 但是live在ios下失效,为了解决这个问题,我采用了暴力的方法去解决,每次添 ...

  3. 原生js在IE7下 向dom添加节点的一个bug, (本例为添加hidden input)

    需求是要用js向dom结构增加1个hidden用来存放要post到服务器的数据 var aspnetForm = document.getElementById("aspnetForm&qu ...

  4. dom添加事件

    1.语法:document.getElementById('btn').addEventListener 2.可以添加多个EventListener,且不会覆盖 3.移除EventListener, ...

  5. DOM 添加 / 更新 / 删除 XML (CURD)

    获得Document /**     * 获取文档     * 1.获得实例工厂     * 2.获得解析器     * 3.获得document     */ 添加结点 /**     * 1.获得 ...

  6. 如何给js动态创建的dom添加事件

    delegate() 方法 实例 当点击鼠标时,隐藏或显示 p 元素: $("div").delegate("button","click" ...

  7. Vue(基础五)_vue中用ref和给dom添加事件的特殊情况

    一.前言 这篇文章涉及的主要内容有: 1.ref绑定在标签上是获取DOM对象 2.ref绑定在子组件上获取的是子组件对象 3.案列:自动获取input焦点 二.主要内容 1.基础内容: ref 被用来 ...

  8. dom 添加删除节点

    //找到 div1 var div1 = document.getElementById("div1"); //创建 一个 p标签 var p = document.createE ...

  9. js dom 添加类

    var sheng = document.getElementById("sheng"); ; sheng.onclick = function() { if(this.paren ...

随机推荐

  1. Exclusive Time of Functions

    On a single threaded CPU, we execute some functions.  Each function has a unique id between 0 and N- ...

  2. Android渐变色xml配置

    这里渐变色: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=&quo ...

  3. js执行多次事件,而非一次

    晚上查阅了很多文章,都是避免点击事件多次执行.反过来要是让事件多次执行该如何做? 这里可以配个setTimeout():来执行 这里我们用layui <link rel="styles ...

  4. MySQL之无限级分类表设计

    首先查找一下goods_cates表和table_goods_brands数据表 分别使用命令: root@localhost test>show columns from goods_cate ...

  5. 小白学习tornado第二站-tornado简单介绍

    tornado基本web应用结构 分为两大块类 Application对象(只会实例化一次) 路由表URl映射 (r'/', MainHandler) 关键词参数settings RequestHan ...

  6. 基于VS搭建OpenCV环境

    OpenCV OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库.OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行, ...

  7. redis 单线程的理解

    单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程.其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会 ...

  8. linux安装git服务器和svn服务器

    linux版本 linux版本为CentOS 6.8 (要注意有些软件的安装方法在各个linux版本之间也是存在差异的) git服务器 git服务器需要提供一个UI供开发人员创建项目管理项目,选择使用 ...

  9. nginx入门,安装

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在 ...

  10. 了解并安装Nginx

    公司使用nginx作为请求分发服务器,发现本人在查看nginx配置上存在些许困难,故仔细阅读了陶辉的<深入理解nginx模块开发与框架>第一部分,并作此记录. 了解 我根据书上的思路来了解 ...