文章目录
认识DOMDOM_byid元素节点属性DOM_bytagnameDOM_bynameDOM_byclassnameDOM_获取当前样式DOM_封装函数DOM_attribute方法DOM_元素节点属性DOM_删除空白节点DOM_元素节点属性和attributesDOM_创建带文本的元素节点DOM_insertbeforeDOM_元素节点操作方法
认识DOM
DOM document object model 文档对象模型 html css 页面内容 js 页面行为操作 【注】DOM是打通html,css和js壁垒的一个工具 DOM种节点属性一共有三种 【注】在js种所有节点都是对象
<div title
="属性节点">测试Div
</div
>
元素节点 <div ></div> 属性节点 title="属性节点" 文本节点 测试Div
DOM_byid元素节点属性
在获取class,不能直接class,必须使用className。 在style样式中,使用-链接的属性,访问的时候需要将-去掉,然后将后续的单词的首字母大写。 如:alert("div.style.backgroundColor");
DOM_bytagname
document.getElementsByTagName() node.getElementByTagName() 【注】从node节点开始,找出所有符合条件的元素节点 参数:标签名 功能:获取当前页面上所有符合该标签名标准的元素节点 返回值:一个装有符合条件的元素节点的数组
DOM_byname
document.getElementsByName() 参数:name的值 返回值:一个装有符合条件的元素节点的数组 【注】name属性一般情况下,只有文本输入框的元素节点才有
DOM_byclassname
<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<title
>Document
</title
>
<script type
="text/javascript">
window
.onload = function(){
var nodes
= document
.getElementsByClassName("box");
var oUl
= document
.getElementById("ul1");
var nodes
= oUl
.getElementsByClassName("box")
for (var i
= 0; i
< nodes
.length
; i
++) {
alert(nodes
[i
].innerHTML
);
}
}
function elementByClassName(parent
, classStr
){
var nodes
= parent
.getElementsByTagName("*")
var result
= [];
for (var i
= 0; i
< nodes
.length
; i
++) {
if (nodes
[i
].className
== classStr
) {
result
.push(node
[i
]);
}
}
return result
;
}
</script
>
</head
>
<body
>
<ul id
= "ul1">
<li
>111111</li
>
<li
class = "box">222222</li
>
<li
>333333</li
>
<li
class = "box">444444</li
>
</ul
>
<ol id
= "ol1">
<li
class = "box">555555</li
>
<li
>555555</li
>
<li
class = "box">555555</li
>
<li
>555555</li
>
</ol
>
</body
>
</html
>
DOM_获取当前样式
<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<title
>Document
</title
>
<style type
="text/css">
#div1
{
background
-color
: red
;
width
: 300px
;
}
</style
>
<script type
="text/javascript">
window
.onload = function(){
var oDiv
= document
.getElementById("div1");
alert(getComputedStyle(oDiv
)["width"]);
}
function getStyle(elem
, attr
){
return elem
.currentStyle
? elem
.currentStyle
[attr
] : getComputedStyle(elem
)[attr
];
}
</script
>
</head
>
<body
>
<div id
="div1" style
="height: 300px"></div
>
</body
>
</html
>
DOM_封装函数
<<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<title
>Document
</title
>
<script type
="text/javascript">
function $(vArg
){
swith(vArg
[0]){
case "#"://id
return document
.getElementById(vArg
.substring(1));
break;
case "."://clsssName
return elementByClassName(document
, vArg
.substring(1));
break;
default:
var str
= vArg
.substring(0, 5);
if(str
== "name="){
return document
.getElementsByClassName(vArg
.substring(5));
}else{
return document
.getElementsByTagName(vArg
);
}
break;
}
}
function elementByClassName(parent
, classStr
){
var nodes
= parent
.getElementsByTagName("*")
var result
= [];
for (var i
= 0; i
< nodes
.length
; i
++) {
if (nodes
[i
].className
== classStr
) {
result
.push(node
[i
]);
}
}
return result
;
}
window
.onload = function(){
}
</script
>
</head
>
<body
>
<div id
= "div1">1111111</div
>
<div
class = "box">2222222</div
>
<div
class = "box">3333333</div
>
<div name
= "hello">4444444</div
>
</body
>
</html
>
DOM_attribute方法
<<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<title
>Document
</title
>
<script type
="text/javascript">
window
.onload = function(){
var oDiv
= document
.getElementById("div1");
oDiv
.setAttribute("title", "xxx");
}
</script
>
</head
>
<body
>
<div id
="div1" title
="hello" name
="world" class="box"></div
>
</body
>
</html
>
DOM_元素节点属性
<<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<title
>Document
</title
>
<script type
="text/javascript">
window
.onload = function(){
var oDiv
= document
.getElementById("div1");
}
</script
>
</head
>
<body
>
<div id
="div1"><em
>斜体
</em
>文本内容
<strong
>粗体
</strong
></div
>
</body
>
</html
>
DOM_删除空白节点
<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<title
>Document
</title
>
<script type
="text/javascript">
window
.onload = function(){
var oDiv
= document
.getElementById("div1");
removeSpaceNode2(oDiv
);
alert(oDiv
.childNodes
.length
);
alert(oDiv
.firstChild
.nodeName
);
}
function removeSpaceNode2(parent
){
var nodes
= parent
.childNodes
;
for (var i
= nodes
.length
- 1; i
>= 0; i
--) {
if (nodes
[i
].nodeType
== 3 && /^\s+$/.test(nodes
[i
].nodeValue
)) {
parent
.removeChild(nodes
[i
]);
}
}
}
function removeSpaceNode(nodes
){
var result
= [];
for (var i
= 0; i
< nodes
.length
; i
++) {
if (nodes
[i
].nodeType
== 3 && /^\s+$/.test(nodes
[i
].nodeValue
)) {
continue;
}
result
.push(nodes
[i
]);
}
return result
;
}
</script
>
</head
>
<body
>
<div id
="div1">
<em
>斜体
</em
>
文本内容
<strong
>粗体
</strong
>
</div
>
</body
>
</html
>
DOM_元素节点属性和attributes
使用前记得删去空白节点,封装函数如上节的removeSpaceNode2(parent)
<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<title
>Document
</title
>
<script type
="text/javascript">
window
.onload = function(){
var oDiv
= document
.getElementById("div1");
alert(oDiv
.attributes
["id"].nodeName
);
alert(oDiv
.attributes
["id"].nodeType
);
alert(oDiv
.attributes
["id"].nodeValue
);
}
</script
>
</head
>
<body
>
<div id
="div1" title
="hello" name
="world" class="box"></div
>
</body
>
</html
>
DOM_创建带文本的元素节点
【注】document.Write()在添加内容的时候,会将原有页面上的内容覆盖掉。
function creatElementWithTxt(tagName
, txt
){
var node
= document
.createElement(tagName
);
var oTxt
= document
.createTextNode(txt
);
node
.appendChild(oTxt
)
return node
;
}
DOM_insertbefore
<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<title
>Document
</title
>
<script type
="text/javascript">
window
.onload = function(){
var node
= creatElementWithTxt("strong", "strong文本");
var oSpan
= document
.getElementsByTagName("span")[0];
oSpan
.parentNode
.insertBefore(node
, oSpan
);
}
function creatElementWithTxt(tagName
, txt
){
var node
= document
.createElement(tagName
);
var oTxt
= document
.createTextNode(txt
);
node
.appendChild(oTxt
)
return node
;
}
function insertAfter(newNode
, oldNode
){
var parent
= oldNode
.parentNode
;
if (oldNode
== parent
.lastChild
) {
parent
.appendChild(newNode
);
}else{
parent
,insertBefore(newNode
, oldNode
.nextSibling
)
}
}
</script
>
</head
>
<body
>
<div id
="div1">
<p
>p
</p
>
<span
>span
</span
>
<em
>em
</em
>
</div
>
</body
>
</html
>
DOM_元素节点操作方法
<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<title
>Document
</title
>
<script type
="text/javascript">
window
.onload = function(){
var oDiv
= document
.getElementById({"div1"});
var oSpan
= document
.getElementByTagName("span")[0];
var node
= oDiv
.cloneNode();
oSpan
.parentNode
.insertBefore(node
, oSpan
);
}
</script
>
</head
>
<body
>
<span
>span
</span
>
<div id
="div1">div
</div
>
<p
>p
</p
>
</body
>
</html
>