【JS学习笔记】DOM操作应用-创建、插入和删除元素;文档碎片

一、创建、插入和删除元素

(1)创建DOM元素

  createElement(标签名) 创建一个节点

  appendChild(节点) 追加一个节点

  例子:为ul插入li

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload = function ()
{
    var oBtn=document.getElementById(‘btn1‘);
    var oUl=document.getElementById(‘ul1‘);
    var oTxt=document.getElementById(‘txt1‘);
    
    oBtn.onclick = function()
    {
        var oLi=document.createElement(‘li‘);/*创建好的li,系统并不知道要放在什么位置,需要我们自己设置*/
        oLi.innerHTML=oTxt.value;
        //父级,.appendChild(子节点);
        oUl.appendChild(oLi);/*oLi作为一个子节点添加给oUl*/
        };
    };
</script>
</head>

<body>
<input id="txt1" ytpe="text" />
<input id="btn1" type="button" value="创建li" />
<ul id="ul1">
</ul>
</body>
</html>

(2)插入元素

  insertBefore(节点,原有节点) 在已有元素钱插入

  例子:倒序插入li

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload = function ()
{
    var oBtn=document.getElementById(‘btn1‘);
    var oUl=document.getElementById(‘ul1‘);
    var oTxt=document.getElementById(‘txt1‘);
    
    oBtn.onclick = function()
    {
        var oLi=document.createElement(‘li‘);/*创建好的li,系统并不知道要放在什么位置,需要我们自己设置*/
        var aLi=oUl.getElementsByTagName(‘li‘);
        oLi.innerHTML=oTxt.value;
        //父级,.appendChild(子节点);
        //oUl.appendChild(oLi);/*oLi作为一个子节点添加给oUl*/
        //这段代码用来兼容IE
        if(aLi.length>0)
        {
            oUl.insertBefore(oLi,aLi[0]);/*每次往第0个li之前插入*/
            }
        else
        {
            oUl.appendChild(oLi);/*如果之前没有li,则直接使用appendChild追加一个节点*/
            }
        
        };
    };
</script>
</head>

<body>
<input id="txt1" ytpe="text" />
<input id="btn1" type="button" value="创建li" />
<ul id="ul1">
</ul>
</body>
</html>

(3)删除DOM元素

  removeChild(节点) 删除一个节点

  例子:删除li

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>删除元素</title>
</head>
<script>
window.onload = function ()
{
    var aA=document.getElementsByTagName(‘a‘);
    var oUl=document.getElementById(‘ul1‘);
    
    for(var i=0;i<aA.length;i++)
    {
        aA[i].onclick = function ()
        {
            oUl.removeChild(this.parentNode);
            };
        }
    };
</script>
<body>
<ul id="ul1">
    <li>aaaaa<a href="javascript:;">删除</a></li>
    <li>bbbbbb<a href="javascript:;">删除</a></li>
    <li>cccccc<a href="javascript:;">删除</a></li>
    <li>dddddd<a href="javascript:;">删除</a></li>
</ul>
</body>
</html>

二、文档碎片

(1)文档碎片可以提高DOM的操作性能(理论上),但是只在低级的浏览器里面有用,如果在高级浏览器中,用这种方法可能会导致性能不但没有提高反而降低了。

比如要插入一万个li标签,如果没有文档碎片,就必须插入一个然后页面渲染一次,插入完全部就要渲染一万次,太损耗性能。利用文档碎片,可以先把需要修改的全部放入文档碎片中,再一次渲染。

(2)文档碎片原理

(3)document.createDocumentFragment()

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文档碎片2</title>
<script>
window.onload = function ()
{
    var oUl=document.getElementById(‘ul1‘);
    var oFrag=document.createDocumentFragment();/*创建文档碎片*/
    
    for(var i=0;i<10000;i++)
    {
        var oLi=document.createElement(‘li‘);
        
        oFrag.appendChild(oLi);/*直接往文档碎片里面装*/
        
        }
        oUl.appendChild(oFrag);/*直接把文档碎片一次性装进oUl中*/
    };
</script>
</head>

<body>
<ul id="ul1">
    
</ul>
</body>
</html>

时间: 2024-10-06 09:21:43

【JS学习笔记】DOM操作应用-创建、插入和删除元素;文档碎片的相关文章

js学习笔记33----DOM操作

前面有讲过一些DOM的基本概念. 今天来说一下DOM 的一些基本操作,主要有创建节点,追加节点,删除节点. 1.创建DOM元素: createElement(标签名) -- 创建一个节点 appendChild(节点) -- 追加一个节点 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>DOM 操作</title> <script typ

【学习笔记】关于DOM4J:使用DOM4J解析XML文档

一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org.dom4j这个包里定义: 二.DOM4J的接口 Attribute:定义了XML的属性: Branch:是能够包含子节点的节点,如XML元素(Element)和文档(Documents)定义了一个公共的行为: CDATA:定义了XML的CDATA区域: CharacterData:是一个标识接口,标

Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档

前言 你可能比较熟悉如何用 Github Pages 来分享你的工作,又或许你看过一堂教你建立你的第一个 Github Pages 网站的教程.近期 Github Pages 的改进使得从不同的数据源来发布您的网站更加的方便,其中的来源之一就是你的仓库的 /docs 目录. 文档的质量是一个软件项目健康发展的标志.对于开源项目来说,维护一个可靠而不出错的知识库.详细说明所有的细节是至关重要的.精心策划的文档可以让增加项目的亲切感,提供一步步的指导并促进各种方式的合作可以推动开源软件开发的协作进程

juqery学习笔记--DOM操作

一.添加节点 $(selector).append()   向selector选择的元素的里面插入参数参数所指定的dom元素,插入的位置在最后面.参数可以是直接的HTML字符串,也可以是由$()函数创建的DOM元素 如:$(selector).append(“<b>你好</b>”); 或   $dom=$(“<b>你好</b>”);   $(selector).append($dom); $(HTML).appendTo(selector) 向selecto

node.js学习笔记(一)——创建第一个应用

巧妇难为无米之炊.要学习node.js,当然必须先有node.js环境(可以去官网 http://nodejs.cn/ 下载安装),如果还是不懂怎么配置开发环境,度娘会告诉你一切. 安装完成环境之后,先别急着开发.在开发之前,为了更清晰的掌握接下来我们的第一个应用的代码逻辑,我们还需要了解一下node.js 应用的基本组成成分,如下: 1. 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块. 2. 创建服务器:服务器可以监听客户端的请求,类似于 Apa

jQuery学习笔记DOM操作之包含节点方法

jQuery学习笔记DOM操作之替换节点方法

JS学习笔记5_DOM

1.DOM节点的常用属性(所有节点都支持) nodeType:元素1,属性2,文本3 nodeName:元素标签名的大写形式 nodeValue:元素节点为null,文本节点为文本内容,属性节点为属性值 关系属性:parentNode,childNodes,nextSibling,previousSibling,firstChild,lastChild ownerDocument:文档节点(document对象) 2.操作DOM节点(增/删/改) appendChild(node);给当前节点的

Node.js学习笔记【3】NodeJS基础、代码的组织和部署、文件操作、网络操作、进程管理、异步编程

一.表 学生表 CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY KEY  (`stuNum`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 学生分数表 CREATE TABLE `t_stu_score` ( `id` int(11