javascript 操作DOM

一、document.getElementById() 根据Id获取元素节点

<div id="div1">
<p id="p1">
我是第一个P</p>
<p id="p2">
我是第二个P</p>
</div>

window.onload = function () {
var str = document.getElementById("p1").innerHTML;
alert(str); //弹出 我是第一个P
}

二、document.getElementsByName() 根据name获取元素节点

<div id="div1">
<p id="p1">
我是第一个P</p>
<p id="p2">
我是第二个P</p>
<input type="text" value="请输入值" name="userName" />
<input type="button" value="确定" onclick="fun1()">
</div>

function fun1() {
var username = document.getElementsByName("userName")[0].value;
alert(username); //输出userName里输入的值
}

三、document.getElementsByTagName() 根据HTML标签名获取元素节点,注意getElements***的选择器返回的是一个NodeList对象,能根据索引号选择其中1个,可以遍历输出。

<div id="div1">
<p id="p1">
我是第一个P</p>
<p id="p2">
我是第二个P</p>
</div>

window.onload = function () {
var str = document.getElementsByTagName("p")[1].innerHTML;
alert(str); //输出 我是第二个P,因为获取的是索引为1的P,索引从0开始
}

window.onload = function () {
var arr = document.getElementsByTagName("p");
for (var i = 0; i < arr.length; i++) {
alert(arr[i].innerHTML);
}
}

window.onload = function () {
var node = document.getElementById("div1");
var node1 = document.getElementsByTagName("p")[1]; //从获取到的元素再获取
alert(node1.innerHTML);
}

四、document.getElementsByClassName() 根据class获取元素节点

<div id="div1">
<p id="p1" class="class1">
我是第一个P</p>
<p id="p2">
我是第二个P</p>
</div>

window.onload = function () {
var node = document.getElementsByClassName("class1")[0];
alert(node.innerHTML);
}

五、javascript中的CSS选择器

document.querySelector() //根据CSS选择器的规则,返回第一个匹配到的元素
document.querySelectorAll() //根据CSS选择器的规则,返回所有匹配到的元素

<div id="div1">
<p id="p1" class="class1">
我是第一个P</p>
<p id="p2" class="class2">
我是第二个P</p>
</div>

window.onload = function () {
var node = document.querySelector("#div1 > p");
alert(node.innerHTML); //输出 我是第一个P

var node1 = document.querySelector(".class2");
alert(node1.innerHTML); //输出 我是第二个P

var nodelist = document.querySelectorAll("p");
alert(nodelist[0].innerHTML + " - " + nodelist[1].innerHTML); //输出 我是第一个P - 我是第二个P
}

六、文档结构和遍历
(1)作为节点数的文档
1、parentNode 获取该节点的父节点
2、childNodes 获取该节点的子节点数组
3、firstChild 获取该节点的第一个子节点
4、lastChild 获取该节点的最后一个子节点
5、nextSibling 获取该节点的下一个兄弟元素
6、previoursSibling 获取该节点的上一个兄弟元素
7、nodeType 节点的类型,9代表Document节点,1代表Element节点,3代表Text节点,8代表Comment节点,11代表DocumentFragment节点
8、nodeVlue Text节点或Comment节点的文本内容
9、nodeName 元素的标签名(如P,SPAN,#text(文本节点),DIV),以大写形式表示

注意,以上6个方法连元素节点也算一个节点。

<div id="div1">
<p id="p1" class="class1">
我是第一个P</p>
<p id="p2" class="class2">
我是第二个P</p>
</div>

window.onload = function () {
var node1 = document.querySelector(".class2");
alert(node1.parentNode.innerHTML); //输出 <p id="p1" class="class1">我是第一个P</p><p id="p2" class="class2">我是第二个P</p>

var nodelist = document.getElementById("div1");
var arr = nodelist.childNodes;
alert(arr[1].innerHTML + " - " + arr[3].innerHTML); //输出 我是第一个P - 我是第二个P 为什么是1,3呢?因为本方法文本节点也会获取,
                                           也就是说0,2,4是文本节点
}

<div id="div1">
文本1
<p id="p1" class="class1">
我是第一个P</p>
文本2
<p id="p2" class="class2">
我是第二个P</p>
文本3
</div>

window.onload = function () { //依次输出,文本1,我是第一个P,文本2,我是第二个P,文本3
var node = document.getElementById("div1");
for (var i = 0; i < node.childNodes.length; i++) {
if (node.childNodes[i].nodeType == 1) {
alert(node.childNodes[i].innerHTML);
}
else if (node.childNodes[i].nodeType == 3) {
alert(node.childNodes[i].nodeValue);
}
}
}

(2)作为元素树的文档
1、firstElementChild 第一个子元素节点
2、lastElementChild 最后一个子元素节点
3、nextElementSibling 下一个兄弟元素节点
4、previousElementSibling 前一个兄弟元素节点
5、childElementCount 子元素节点个数量
注意,此5个方法文本节点不算进去

<div id="div1">
<p id="p1" class="class1">
我是第一个P</p>
<p id="p2" class="class2">
我是第二个P</p>
</div>

window.onload = function () {
var node = document.getElementById("div1");
var node1 = node.firstElementChild;
var node2 = node.lastElementChild;

alert(node.childElementCount); //输出2,div1一共有两个非文档子元素节点
alert(node1.innerHTML); //输出 我是第一个P
alert(node2.innerHTML); //输出 我是第二个P
alert(node2.previousElementSibling.innerHTML); //输出 我是第一个P(第二个元素节点的上一个非文本元素节点是P1)
alert(node1.nextElementSibling.innerHTML); //输出 我是第二个P(第一个元素节点的下一个兄弟非文本节点是P2)
}

七、javascript操作HTML属性
1、属性的读取,此处要注意的是,某些HTML属性名称在javascript之中是保留字,因此会有些许不同,如class,lable中的for在javascript中变为htmlFor,className。

<div id="div1">
<p id="p1" class="class1"> 我是第一个P</p>
<img src="123.jpg" alt="我是一张图片" id="img1" />
<input type="text" value="我是一个文本框" id="input1" />
</div>

window.onload = function () {
var nodeText = document.getElementById("input1");
alert(nodeText.value); //输出 我是一个文本框
var nodeImg = document.getElementById("img1");
alert(nodeImg.alt); //输出 我是一张图片
var nodeP = document.getElementById("p1");
alert(nodeP.className); //输出 class1 注意获取class是className,如果写成nodeP.class则输出undefined
}

2、属性的设置,此处同样要注意的是保留字

<div id="div1">
<img src="1big.jpg" alt="我是一张图片" id="img1" onclick="fun1()" />
</div>

function fun1() {
document.getElementById("img1").src = "1small.jpg"; //改变图片的路径属性。实现的效果为,当点击图片时,大图变小图。
}

3、非标准HTML属性
getAttribute(); //注意这两个方法是不必理会javascript保留字的,HTML属性是什么就怎么写。
setAttribute();

<div id="div1">
<img src="1big.jpg" alt="我是一张图片" class="imgClass" id="img1" onclick="fun1()" />
</div>

function fun1() {
document.getElementById("img1").setAttribute("src", "1small.jpg");
alert(document.getElementById("img1").getAttribute("class"));
}

4、Attr节点的属性
attributes属性 非Element对象返回null,Element一半返回Attr对象。Attr对象是一个特殊的Node,通过name与value获取属性名称与值。
如:document.getElementById("img1")[0];
document.getElementById("img1").src;

<div id="div1">
<img src="1big.jpg" alt="我是一张图片" class="imgClass" id="img1" onclick="fun1()" />
</div>

function fun1() {
alert(document.getElementById("img1").attributes[0].name); //输出 onclick 注意,通过索引器访问是写在右面在排前面,从0开始
alert(document.getElementById("img1").attributes.src.value); //输出1big.jpg
document.getElementById("img1").attributes.src.value = "1small.jpg"; //点击后改变src属性,实现了点击大图变小图效果
}

八、元素的内容
1、innerText、textContent innerText与textContent的区别,当文本为空时,innerText是"",而textContent是undefined
2、innerHTML

<div id="div1">
<p id="p1">我是第一个P</p>
<p id="p2">我是第<b>二</b>个P</p>
</div>

window.onload = function () {
alert(document.getElementById("p1").innerText); //注意火狐浏览器不支持innerText
alert(document.getElementById("p1").textContent); //基本都支持textContent
document.getElementById("p1").textContent = "我是p1,javascript改变了我"; //设置文档Text
alert(document.getElementById("p2").textContent);
alert(document.getElementById("p2").innerHTML); //innerHTML与innerText的区别,就是对HTML代码的输出方式Text不会输出HTML代码
}

九、创建,插入,删除节点
1、document.createTextNode() 创建一个文本节点

<div id="div1">
<p id="p1">我是第一个P</p>
<p id="p2">我是第二个P</p>
</div>

window.onload = function () {
var textNode = document.createTextNode("<p>我是一个javascript新建的节点</p>");
document.getElementById("div1").appendChild(textNode);
}

完成后HTML变为:
div id="div1">
<p id="p1">我是第一个P</p>
<p id="p2">我是第二个P</p>
我是一个javascript新建的节点
</div>

2、document.createElement() 创建一个元素节点

<div id="div1">
<p id="p1">我是第一个P</p>
<p id="p2">我是第二个P</p>
</div>

window.onload = function () {
var pNode = document.createElement("p");
pNode.textContent = "新建一个P节点";
document.getElementById("div1").appendChild(pNode);
}

执行之后HTML代码变为:

<div id="div1">
<p id="p1">我是第一个P</p>
<p id="p2">我是第二个P</p>
<p>新建一个P节点</p>
</div>

3、插入节点
appendChild() //将一个节点插入到调用节点的最后面
insertBefore() //接受两个参数,第一个为待插入的节点,第二个指明在哪个节点前面,如果不传入第二个参数,则跟appendChild一样,放在最后。

<div id="div1">
<p id="p1">我是第一个P</p>
</div>

window.onload = function () {
var pNode1 = document.createElement("p");
pNode1.textContent = "insertBefore插入的节点";
var pNode2 = document.createElement("p");
pNode2.textContent = "appendChild插入的节点";
document.getElementById("div1").appendChild(pNode2);
document.getElementById("div1").insertBefore(pNode1,document.getElementById("p1"));
}

执行之后HTML代码为:
<div id="div1">
<p>insertBefore插入的节点</p>
<p id="p1">我是第一个P</p>
<p>appendChild插入的节点</p>
</div>

十、删除和替换节点。
1、removeChild(); 由父元素调用,删除一个子节点。注意是直接父元素调用,删除直接子元素才有效,删除孙子元素就没有效果了。

<div id="div1">
<p id="p1">我是第一个P</p>
<p id="p2">我是第二个P</p>
</div>

window.onload = function () {
var div1 = document.getElementById("div1");
div1.removeChild(document.getElementById("p2"));
}

执行之后代码变为:
<div id="div1">
<p id="p1">我是第一个P</p> //注意到第二个P元素已经被移除了
</div>

2、replaceChild() //删除一个子节点,并用一个新节点代替它,第一个参数为新建的节点,第二个节点为被替换的节点

<div id="div1">
<p id="p1">我是第一个P</p>
<p id="p2">我是第二个P</p>
</div>

window.onload = function () {
var div1 = document.getElementById("div1");
var span1 = document.createElement("span");
span1.textContent = "我是一个新建的span";
div1.replaceChild(span1,document.getElementById("p2"));
}

执行完成后HTML代码变为:
<div id="div1">
<p id="p1">我是第一个P</p>
<span>我是一个新建的span</span> //留意到p2节点已经被替换为span1节点了
</div>

十一、javascript操作元素CSS

    通过元素的style属性可以随意读取和设置元素的CSS样式,例子:

<head>
<title></title>
<script type="text/javascript">
window.onload = function () {
alert(document.getElementById("div1").style.backgroundColor);
document.getElementById("div1").style.backgroundColor = "yellow";
}
</script>
</head>
<body>
<div id="div1" style="width:100px; height:100px; background-color:red"></div>
</body>

时间: 2024-10-25 11:26:20

javascript 操作DOM的相关文章

Javascript操作DOM常用API总结

Javascript操作DOM常用API总结 原文地址:http://luopq.com/2015/11/30/javascript-dom/ 类型 Node类型(ELEMENT_NODE:1 ATTRIBUTE_NODE:2 TEXT_NODE:3 COMMENT_NODE:8``DOCUMENT_NODE:9 DOCUMENT_FRAGMENT_NODE:11) 节点创建型(createElement createTextNode cloneNode createDocumentFragme

javascript操作DOM方法整理

原自本人整理,主要来源于这里.大家如果有补充,十分欢迎大家留言. 一.获取节点 document.getElementById();//id="" document.getElementsByName();//name="" document.getElementsByTagName();//"input" document.getElementsByClassName();//class="" 二.css选择器 docume

Python javascript操作DOM

文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来.DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容.这里我们主要是讲用javascript操作DOM. 1. 查找元素 1.1 直接查找 document.getElementById 根据ID获取一个标签 document.getElem

【repost】Javascript操作DOM常用API总结

Javascript操作DOM常用API总结 文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前,首先我们来复习一下一些基本概念,这些概念是掌握api的关键,必须理解它们. Node类型 DOM1级定义了一个Node接口,该接口由DOM中所有节点类型实现.这个Node接口在JS中是作为Node类型实现的.在IE9以下版本无法访问到这个类型,JS中所有

JavaScript 操作Dom对象

1)JavaScript  操作DOM對象 1.DOM:是Document  Object  Model 的缩写,及文档对象模型 2.DOM通常分为三类:DOM Core(核心).HTML-DOM 和 CSS-DOM 1.DOM Core DOM Core 不是JavaScript的专属品,任何一种支持DOM的编辑器语言都可以使用它 它的用途不仅限于处理一种使用标记语言编写出来的文档如HTML文档 getElementById()/getElementByTagName()等方法都是 DOM C

javascript操作dom对象

什么叫DOM? DOM是文档对象模型(Document Object Model,是基于浏览器编程(在本教程中,可以说就是DHTML编程)的一套API接口,W3C出台的推荐标准,每个浏览器都有一些细微的差别,其中以Mozilla的浏览器最与标准接近. DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容. 查找元素 1.直接查找 方法名 描述 getElementById(id) (document) 获取有指定惟一ID属性值文档中的元素 getElementsByTagNam

JavaScript操作DOM节点

DOM (文档对象模型(Document Object Model)) 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM.Document Object Model的历史可以追溯至1990年代后期微软与Netscape的“浏览器大战”,双方为了在JavaScript与JScript一决生死,于是大规模的赋予浏览器强大的功能.

Javascript操作DOM元素

1.动态创建DOM的步骤 (1)调用document的createElement方法来创建具有指定标签的DOM对象 (2)然后通过调用某个元素的appendChild();方法将新创建的元素添加到相应的元素下. 2.操作DOM的方法 createElement('element');创建一个节点 document.createElement('<input type="button" value="hello" />');快速创建元素,并且赋值,但是注意

使用JavaScript操作DOM节点元素的常用方法(创建/删除/替换/复制等)

getElementById(id)这是通过id来访问某一元素,最常用的之一,例:<html><body><div id="myid">test</div><script language="javascript">alert(document.getElementById("myid").innerHTML);</script></body></html&

javascript操作DOM的方法与属性

文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构. 将HTML代码分解为DOM节点层次图: HTML文档可以说由节点构成的集合,DOM节点有: 1. 元素节点:上图中<html>.<body>.<p>等都是元素节点,即标签. 2. 文本节点:向用户展示的内容,如<li>...</li>中的JavaScript.DOM.CSS等文本. 3.