DOM对象
1、DOM对象
(1)DOM–Document Object Model[文档对象模型]
(2)当网页被加载时,浏览器会创建页面的文档对象模型。
(3)HTML DOM 模型被构造为对象的树,如下图所示:
<html>
<head>
<title>My title</title>
</head>
<body>
<a href=””>My link</a>
<h1>My header</h1>
</body>
</html>
2、 DOM可以完成的功能
(1)JavaScript 能够改变页面中的所有 HTML 元素
(2)JavaScript 能够改变页面中的所有 HTML 属性
(3)JavaScript 能够改变页面中的所有 CSS 样式
(4)JavaScript 能够对页面中的所有事件做出反应
3、查找 HTML 元素
(1)getElementById(id属性值);通过 id 查找 HTML 元素
-
注意;
当id属性值相同时,只能得到第一个元素<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> //getElementById(id属性值);通过 id 查找 HTML 元素 function testByID(){ var p1=document.getElementById("p1"); //p1--[object HTMLParagraphElement]; DOM对象 p1.style.fontSize="50px"; var p2=document.getElementById("p2"); //p2--[object HTMLParagraphElement] DOM对象 p2.style.color="red"; //当id属性值相同时,只能得到第一个元素 var p3=document.getElementById("p3"); //p3---[object HTMLParagraphElement] DOM对象 p3.style.fontSize="50px"; p3.style.color="red"; } </script> </head> <body> <p id="p1">p元素测试getElementById(id属性值)</p> <p id="p2">p元素测试getElementById(id属性值)</p> <p id="p3">p元素测试getElementById(id属性值)</p> <p id="p3">p元素测试getElementById(id属性值)</p> <input type="button" value="测试getElementById(id属性值)" onclick="testByID();"> </body> </html>
(2)getElementsByTagName(标签名)通过标签名查找 HTML 元素
-
注意;
当元素在html文件中只有一个的时候,通过getElementsByTagName方法得到的结果依然是数组<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> //getElementsByTagName(标签名)通过标签名查找 HTML 元素 function testByTagName(){ var p=document.getElementsByTagName("p"); var size=10; for(var i=0;i<p.length;i++){ var fonts=size*i+size; p[i].style.fontSize=fonts+"px"; p[i].style.color="red"; } } </script> </head> <body> <p>getElementsByTagName(标签名)通过标签名查找 HTML 元素</p> <p>getElementsByTagName(标签名)通过标签名查找 HTML 元素</p> <p>getElementsByTagName(标签名)通过标签名查找 HTML 元素</p> <p>getElementsByTagName(标签名)通过标签名查找 HTML 元素</p> <p>getElementsByTagName(标签名)通过标签名查找 HTML 元素</p> <input type="button" value="测试getElementsByTagName(标签名)" onclick="testByTagName()"> </body> </html>
(3) getElementsByClassName(class属性值)通过类名找到 HTML 元素
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function testByClassName(){
var p1= document.getElementsByClassName("p1");
//alert(p1); //[object HTMLCollection]
for(var i=0;i<p1.length;i++){
p1[i].style.color="red";
}
var h= document.getElementsByClassName("h");
//alert(h); //[object HTMLCollection]
for(var i=0;i<h.length;i++){
h[i].style.color="blue";
}
}
</script>
</head>
<body>
<p class="p1">getElementsByClassName(class属性值)通过标签名查找 HTML 元素</p>
<p class="p1">getElementsByClassName(class属性值)通过标签名查找 HTML 元素</p>
<p class="p1">getElementsByClassName(class属性值)通过标签名查找 HTML 元素</p>
<h2 class="h">getElementsByClassName(class属性值)通过标签名查找 HTML 元素</h2>
<h2 class="h">getElementsByClassName(class属性值)通过标签名查找 HTML 元素</h2>
<h2 class="h">getElementsByClassName(class属性值)通过标签名查找 HTML 元素</h2>
<input type="button" value="getElementsByClassName" onclick="testByClassName()" />
</body>
</html>
4、JavaScript 能够改变页面中的所有 HTML 元素[元素的文本内容]
(1)innerHTML 属性–改变页面中HTML 元素的文本内容
-
注意:
innerHTML中设置的字符串内容中有html标记,那么这个被包含的html标记会被解释运行。<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> function testinnerHTML(){ var text1=document.getElementById("text1"); var h1=document.getElementsByTagName("h1")[0]; //h1--[object HTMLHeadingElement] Dom对象 var textvalue=text1.value; h1.innerHTML=textvalue; //h1.innerHTML=text1.value; //h1.innerHTML=document.getElementById("text1").value; } </script> </head> <body> <h1>innerHTML测试</h1> <input type="text" id="text1" /> <input type="button" value="innerHTML测试" onclick="testinnerHTML()" /> </body> </html>
(2)innerText 属性–改变页面中HTML 元素的文本内容
-
注意:
innerText中设置的字符串内容中有html标记,那么这个被包含的html标记会被作为字符串输出。<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> function testinnerText(){ var text1=document.getElementById("text1"); var h1=document.getElementsByTagName("h1")[0]; //h1--[object HTMLHeadingElement] Dom对象 var textvalue=text1.value; h1.innerText=textvalue; //注意:innerText中设置的字符串内容中有html标记,那么这个被包含的html标记会被作为字符串输出。 } </script> </head> <body> <h1>欢迎使用Javascript</h1> <input id="text1" type="text" ><br> <input type="button" value="innerText 属性" onclick="testinnerText();"> </body> </html>
5. JavaScript 能够改变页面中的所有 HTML 属性
-
控制 HTML 属性的格式:
dom对象.具体的html属性名称=属性名称对应的属性值
例如:<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> function testattribute(){ //dom对象.具体的html属性名称=属性名称对应的属性值; var imgdoc=document.getElementsByTagName("img")[0]; //alert(imgdoc); [object HTMLImageElement] imgdoc.src="imgs/avatar2.png"; //imgdoc---dom对象 //src--具体的html属性名称 //"imgs/avatar2.png"---属性名称对应的属性值; } </script> </head> <body> <img src="imgs/avatar.png" /> <input type="button" value="控制html属性" onclick="testattribute();"> </body> </html>
-
属性在html和css中都有。
(1)Html中的属性—是给浏览器解释运行html标记时通过附加信息。往往出现在html的开始标记中,如果有多个中间使用空格分离。
例如:<img ></img>--<img /> <img src=”” width=”” height=”” />
src=”” width=”” height=””----Html标记中的属性
(2)css中的属性----是用来改变html元素的样式。
(2)-1、在html开始元素中通过style属性
例如:
<div style=”width:100px;height:100px”></div>
style---是html属性
width:100px;height:100px----css属性
(2)-2、在style元素中和“.css”文件中
选择器{
css中的属性
}
6. JavaScript 能够改变页面中的所有 CSS 样式
-
格式:
dom对象.style.具体的css属性名称=属性名称对应的属性值;<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> function testCss(){ //dom对象.style.具体的css属性名称=属性名称对应的属性值; var imgdoc=document.getElementsByTagName("img")[0]; var button=document.getElementById("but1"); var hdoc=document.getElementsByTagName("h1")[0]; //alert(hdoc.innerText); //alert(hdoc.innerHTML); var buttext=button.value; //alert(buttext); if(buttext=="隐藏"){ button.value="显示"; imgdoc.style.display="none"; } if(buttext=="显示"){ button.value="隐藏"; imgdoc.style.display="block"; } } </script> </head> <body> <h1>hello<a href="#">test</a></h1> <img src="imgs/avatar.png" /> <input id="but1" type="button" value="隐藏" onclick="testCss();"> </body> </html>