DOM初体验(节点元素操作)

1.1、     创建元素

Document.write

使用这个方法可以向页面上动态地添加元素

 

缺点:

在页面加载完成之后再使用这个方法,会覆盖原来的内容

 1 <input type="button" value="点击向body里面添加元素" id="btn"/>
 2 <script>
 3 //        document.write()
 4         var div = "<div>内容</div>";
 5     document.getElementById("btn").onclick =function (){
 6         //通过一个标签格式的字符串,向body里面输出,被解析成为标签
 7         //注意点:
 8 //如果使用这个方式,发现,在后面添加的元素,会直接成为body的子元素,并且把原来body里面的内容覆盖了
 9         document.write(div);
10     }
11 </script>

InnerHTML

使用这个方法可以向任意元素动态地添加子元素

 

缺点:

一般来说都要频繁的拼接字符串,而且会覆盖掉元素中原来的内容

<input type="button" value="点击使用innerHTML向元素中添加内容" id="btn2"/>
<script>
//element.innerHTML=标签格式的字符串
var btn2 = document.getElementById("btn2");
//往id为content的div里添加元素
//也会覆盖掉原本在标签里面的内容
btn2.onclick = function () {
    var html = "<div><a href=‘#‘>文字</a></div>";
    document.getElementById("content").innerHTML = html;
}
//如果使用innerHTML来完成一个大的结构,可能需要频繁的拼接字符串
</script>

Document.createElement

使用这个方法可以创建任意元素

<input type="button" value="点击创建p标签" id="btn2">

<script>

//语法:document.createElement(标签名称)
$id("btn2").onclick = function () {
    var p = document.createElement("p");
    setInnerText(p, "哈哈")
    $id("box").appendChild(p);
}

</script>

 

特点:

使用这个方法创建的元素,只是在内存中创建不会自动添加到页面,也没有任何的内容,只有一个节点对象。如果要把创建的元素显示在页面上,需要追加元素或者插入元素

1.2、    
追加元素

Parent.appendChild(node)

使用这个方法可以向某个父元素的末尾追加一个新的子元素

<ul id="ul1">
    <li>我是第一个ul的第1li</li>
    <li>我是第一个ul的第2li</li>
    <li>我是第一个ul的第3li</li>
    <li>我是第一个ul的第4li</li>
    <li>我是第一个ul的第5li</li>
    <li>我是第一个ul的第6li</li>
</ul>
<ul id="ul2">
    <li>我是第二个ul的第1li</li>
    <li>我是第二个ul的第2li</li>
    <li>我是第二个ul的第3li</li>
    <li>我是第二个ul的第4li</li>
    <li>我是第二个ul的第5li</li>
    <li>我是第二个ul的第6li</li>
</ul>
<script>
    var ul1 = document.getElementById("ul1");
    var ul2 = document.getElementById("ul2");
    var ul3 = ul1.children[2];
    //如果是a元素的子元素被追加到b元素中,a元素中的子元素会消失,跑到b元素的最后去
    ul2.appendChild(ul3);
    //凡是引用传参,修改的都是堆空间中的对象
</script>

1.3、     克隆元素

Node.cloneNode(deep)

使用这个方法可以克隆某个元素到内存中,只能得到一个节点对象,不会自动添加到页面中

这个方法接受一个boolean类型的参数,决定是否对这个元素进行深度克隆

True  深度克隆  克隆当前元素和所有的子元素

False  浅度克隆  只克隆当前元素(默认)

注意:这个方法会克隆元素的属性,如果这个元素中有id属性,id属性会重复,所以克隆元素的id属性需要重新赋值

1.4、     插入元素

Parent.insertBefore(newNode,oldNode)

这个访求可以向某个父元素指定的位置插入一个新的子元素

这个方法接收两个参数,要插入的新元素和指定位置的元素

注意:使用这个方法的时候,指定位置的元素一定要是调用这个方法的元素的子元素

<ul id="ul1">
    <li>我是第一个ul的第1li</li>
    <li>我是第一个ul的第2li</li>
    <li>我是第一个ul的第3li</li>
    <li>我是第一个ul的第4li</li>
    <li>我是第一个ul的第5li</li>
    <li>我是第一个ul的第6li</li>
</ul>
<ul id="ul2">
    <li>我是第二个ul的第1li</li>
    <li>我是第二个ul的第2li</li>
    <li>我是第二个ul的第3li</li>
    <li>我是第二个ul的第4li</li>
    <li>我是第二个ul的第5li</li>
    <li>我是第二个ul的第6li</li>
</ul>
<input type="button" value="点击" id="btn">
<script>
//插入元素
    //语法:parentNode.insertBefore(newNode,oldNode)
    var ul1=document.getElementById("ul1");
    var li=document.createElement("li");
    li.innerHTML="我是新建的li元素";
    var oldChild=ul.children[3];
    //第一种用法:将一个新建的或者复制的元素,插入到原来的元素之前
    ul1.insertBefore(li,oldChild);

    document.getElementById("btn").onclick=function () {
        //第二种用法:将已经存在结构中的元素,插入到另一个元素之前
        var ulli5=ul1.children[4];
        var ulli6=ul1.children[5];
        ul1.insertBefore(ulli6,ulli5);
    }
    //第三种用法:在不同的父元素之间,也是可以将子元素插入另一个父元素的
    var ul2=document.getElementById("ul2");
    var ulli6=ul1.children[5];
    ul2.insertBefore(ulli6,ul2.children[0]);
</script>

1.5、     删除元素

Parent.removeChild(node)

这个方法可以删除某个指定的子元素

<input type="button" value="点击删除元素" id="btn">
<ul>
    <li>我是第1个li</li>
    <li>我是第2个li</li>
    <li>我是第3个li</li>
    <li>我是第4个li</li>
    <li>我是第5个li</li>
    <li>我是第6个li</li>
</ul>
<script>
    //删除元素语法:
    //parentNode.removeChild(childNode);
    var ul=document.body.children[1];
    document.getElementById("btn").onclick=function () {
        var li1=ul.children[0];
        ul.removeChild(li1);
    }
    //注意:此语法不能自杀,只能通过父元素把它干掉
</script>

1.6、     替换元素

Parent.replaceChild(newNode,oldNode)

这个方法可以将某个父元素的任意一个子元素替换为另外一个元素

这个方法接受两个参数,分别是新的元素和被替换的元素

<ul id="ul1">
    <li>我是第一个ul的第1li</li>
    <li>我是第一个ul的第2li</li>
    <li>我是第一个ul的第3li</li>
    <li>我是第一个ul的第4li</li>
    <li>我是第一个ul的第5li</li>
    <li>我是第一个ul的第6li</li>
</ul>
<ul id="ul2">
    <li>我是第二个ul的第1li</li>
    <li>我是第二个ul的第2li</li>
    <li>我是第二个ul的第3li</li>
    <li>我是第二个ul的第4li</li>
    <li>我是第二个ul的第5li</li>
    <li>我是第二个ul的第6li</li>
</ul>
<input type="button" value="点击替换" id="btn">
<input type="button" value="点击替换2" id="btn2">
<script>
    //替换元素
    //语法:parentNode.replaceChild(newNode,oldNode)
    //用newchild将oldchild替换掉,作为parentNode的第一个子元素
    //一般用法:都是用一个新建或者复制的节点,替换一个原来的节点
    var li=document.createElement("li");
    li.innerHTML="测试替换元素";
    var ul1=document.getElementById("ul1");
    var ulli1=ul1.children[0];
    document.getElementById("btn").onclick=function () {
        ul1.replaceChild(li,ulli1);
    }
    //尝试将已有的元素替换已有的元素
    document.getElementById("btn2").onclick=function () {
        var u2l2=document.getElementById("ul2").children[0];
        ul1.replaceChild(u2l2,ulli1);
    }
</script>
时间: 2024-08-07 00:15:34

DOM初体验(节点元素操作)的相关文章

dom兼容性问题3 元素操作

/* var oLi = document.createElement('li'); oUl.appendChild( oLi ); }; createElement('') : 创建一个dom元素 appendChild() : 往一个节点的现有子节点后面追加一个新的子节点. 父级.appendChild( 子节点 ); insertBefore() createElement('') : 创建一个dom元素 appendChild() : 往一个节点的现有子节点后面追加一个新的子节点. 父级

SSH初体验系列--Hibetnate--2--crud操作

Ok,今天比较详细的学习一下hibernate的C(create).R(read).U(update).D(delete) 相关api... 前言 Session: 是Hibernate持久化操作的基础,提供了众多的数据库操作方法,如save(),update(),delete()...etc,用于完成对象的增加,修改,删除等方法. 后面代码中使用到的HinernateUtil类:是用于构建SessionFactory(Hibernate提供的获取session的工厂类)的一个封装类,在前面的文

DOM初体验(样式设置)

一.获取和设置文本 1. innerHTML 用来获取或设置某个节点下的内容 <div id="box"> <ul> <li>我是1</li> <li>我是2</li> <li>我是3</li> </ul> </div> <script> //获取普通的标签里面的内容 var box=document.getElementById("box&qu

03JavaScript程序设计修炼之道 2019-06-27_20-04-17 节点元素操作:复制

15clone.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compati

JavaScript DOM初体验 点击按钮弹窗

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 7 </head> 8 <body> 9 <input type="button" value="点击" onclick="alert(

JS-DOM ~ 03. 子节点的操作、style.样式和属性、dom元素的创建方法及操作、14个例题、主要是利用js直接控制html属性

带有Element和不带的区别 a)  带Element的获取的是元素节点 b)  不带可能获取文本节点和属性节点 获取所以子节点 a)   . childNodes b)   . children c)   . parentNode . children [索引] . children:获取所有子节点 opacity:0-1:透明度 alpha(opacity:百分数):IE6/7/8透明度 先绑定事件再进行循环 previousNode()上一个兄弟节点 alert(变量名)可测试变量名是否

Day53:DOM对象(节点关系、查找、操作)

一.DOM对象 1.什么是HTML DOM HTML  Document Object Model(文档对象模型) HTML DOM 定义了访问和操作HTML文档的标准方法 HTML DOM 把 HTML 文档呈现为带有元素.属性和文本的树结构(节点树) 2.DOM树          画dom树是为了展示文档中各个对象之间的关系,用于对象的导航. 3.DOM节点 3.1 节点类型: HTML 文档中的每个成分都是一个节点. DOM 是这样规定的:    整个文档是一个文档节点 .(docume

JS——DOM小结(二)操作节点

在DOM总结(一)中已经说明节点有三类:元素节点.属性节点.文本节点这三个节点拥有相同的三个属性,而且可以通过元素节点可以获得当前节点的父节点和子节点.同时可以通过DOM对节点进行增.删.改.查.首先来总体的整理一些思路然后一个一个的进行理解. 图中节点的三个属性nodeName.nodeType.nodeValue可以获得节点的名称.类型.值,三种类型的节点中元素节点具有其特殊性,即可以通过当前的元素节点获得该节点的同级节点.子节点.父节点.同级节点. 通过实例看看效果 在HTML中 <bod

JS中的DOM— —节点以及操作

DOM操作在JS中可以说是非常常见了吧,很多网页的小功能的实现,比如一些元素的增删操作等都可以用JS来实现.那么在DOM中我们需要知道些什么才能完成一些功能的实现呢?今天这篇文章就先简单的带大家入一下JS中DOM操作的门吧!! 一.DOM树的节点 1. DOM节点分为三大类: 元素节点(标签节点).属性节点和文本节点. 属性节点和文本节点都属于元素节点的子节点. 因此操作时,需先选中元素节点,再修改属性和文本. [查看元素节点] 1. 使用getElement系列方法: 具体的HTML代码如下图