3、DOM操作

一、认识DOM

文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。DOM 将HTML文档呈现为带有元素、属性和文本的树结构(节点树)。

先来看看下面代码:

将HTML代码分解为DOM节点层次图:

HTML文档可以说由节点构成的集合,三种常见的DOM节点:

1. 元素节点:上图中<html>、<body>、<p>等都是元素节点,即标签。

2. 文本节点:向用户展示的内容,如<li>...</li>中的JavaScript、DOM、CSS等文本。

3. 属性节点:元素属性,如<a>标签的链接属性href="http://www.imooc.com"。

看下面代码:

<a href="http://www.imooc.com">JavaScript DOM</a>

 

二、通过ID获取元素

学过HTML/CSS样式,都知道,网页由标签将信息组织起来,而标签的id属性值是唯一的,就像是每人有一个身份证号一样,只要通过身份证号就可以找到相对应的人。那么在网页中,我们通过id先找到标签,然后进行操作。

语法:

 document.getElementById(“id”) 

看看下面代码:

结果:null或[object HTMLParagraphElement]

注:获取的元素是一个对象,如想对元素进行操作,我们要通过它的属性或方法。

示例错误代码:

 1 <!DOCTYPE HTML>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>document.getElementById</title>
 6 </head>
 7 <body>
 8 <p id="con">JavaScript</p>
 9 <script type="text/javascript">
10   var mychar=document.getElementById("con");
11   document.write("结果:"+mychar); //输出获取的P标签。 
12 </script>
13 </body>
14 </html>

输出结果:

JavaScript

结果:[object HTMLParagraphElement]
 

三、innerHTML 属性

innerHTML 属性用于获取或替换 HTML 元素的内容。

语法:

Object.innerHTML

注意:

1.Object是获取的元素对象,如通过document.getElementById("ID")获取的元素。

2.注意书写,innerHTML区分大小写。

我们通过id="con"获取<p> 元素,并将元素的内容输出和改变元素内容,代码如下:

结果:

 

四、改变 HTML 样式

HTML DOM 允许 JavaScript 改变 HTML 元素的样式。如何改变 HTML 元素的样式呢?

语法:

Object.style.property=new style;

注意:Object是获取的元素对象,如通过document.getElementById("id")获取的元素。

基本属性表(property):

注意:该表只是一小部分CSS样式属性,其它样式也可以通过该方法设置和修改。

看看下面的代码:

改变 <p> 元素的样式,将颜色改为红色,字号改为20,背景颜色改为蓝:

<p id="pcon">Hello World!</p>
<script>
   var mychar = document.getElementById("pcon");
   mychar.style.color="red";
   mychar.style.fontSize="20";
   mychar.style.backgroundColor ="blue";
</script>

结果:

 

五、显示和隐藏(display属性)

网页中经常会看到显示和隐藏的效果,可通过display属性来设置。

语法:

Object.style.display = value

注意:Object是获取的元素对象,如通过document.getElementById("id")获取的元素。

value取值:

看看下面代码:

示例代码:

 1 <!DOCTYPE HTML>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 5 <title>display</title>
 6     <script type="text/javascript"> 
 7         function hidetext()  
 8         {  
 9         var mychar = document.getElementById("con");
10         mychar.style.display="none";
11         }  
12         function showtext()  
13         {  
14         var mychar = document.getElementById("con");
15         mychar.style.display="block";
16         }
17     </script> 
18 </head> 
19 <body>  
20     <h1>JavaScript</h1>  
21     <p id="con">做为一个Web开发师来说,如果你想提供漂亮的网页、令用户满意的上网体验,JavaScript是必不可少的工具。</p> 
22     <form>
23        <input type="button" onclick="hidetext()" value="隐藏内容" /> 
24        <input type="button" onclick="showtext()" value="显示内容" /> 
25     </form>
26 </body> 
27 </html>

六、控制类名(className 属性)

className属性设置或返回元素的class 属性。

语法:

object.className = classname

作用:

1.获取元素的class 属性

2. 为网页内的某个元素指定一个css样式来更改该元素的外观

看看下面代码,获得 <p> 元素的 class 属性和改变className:

结果:

示例代码:

 1 <!DOCTYPE HTML>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 5 <title>className属性</title>
 6 <style>
 7     body{ font-size:16px;}
 8     .one{
 9         border:1px solid #eee;
10         width:230px;
11         height:50px;
12         background:#ccc;
13         color:red;
14     }
15     .two{
16         border:1px solid #ccc;
17         width:230px;
18         height:50px;
19         background:#9CF;
20         color:blue;
21     }
22     </style>
23 </head>
24 <body>
25     <p id="p1" > JavaScript使网页显示动态效果并实现与用户交互功能。</p>
26     <input type="button" value="添加样式" onclick="add()"/>
27     <p id="p2" class="one">JavaScript使网页显示动态效果并实现与用户交互功能。</p>
28     <input type="button" value="更改外观" onclick="modify()"/>
29 
30     <script type="text/javascript">
31        function add(){
32           var p1 = document.getElementById("p1");
33           p1.className="one";
34        }
35        function modify(){
36           var p2 = document.getElementById("p2");
37           p2.className="two";
38        }
39     </script>
40 </body>
41 </html>

练习:

1、定义"改变颜色"的函数

提示:
obj.style.color
obj.style.backgroundColor 

2、定义"改变宽高"的函数

提示:
obj.style.width
obj.style.height 

3、定义"隐藏内容"的函数

提示:
obj.style.display="none";

4、定义"显示内容"的函数

提示:
obj.style.display="block";

5、定义"取消设置"的函数

提示: 
使用confirm()确定框,来确认是否取消设置。
如是将以上所有的设置恢复原始值,否则不做操作。

6、当点击相应按钮,执行相应操作,为按钮添加相应事件

具体代码:

 1 <!DOCTYPE HTML>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" Content="text/html; charset=utf-8" />
 5 <title>javascript</title>
 6 <style type="text/css">
 7 body{font-size:12px;}
 8 #txt{
 9     height:400px;
10     width:600px;
11     border:#333 solid 1px;
12     padding:5px;}
13 p{
14     line-height:18px;
15     text-indent:2em;}
16 </style>
17 </head>
18 <body>
19   <h2 id="con">JavaScript课程</H2>
20   <div id="txt"> 
21      <h5>JavaScript为网页添加动态效果并实现与用户交互的功能。</h5>
22         <p>1. JavaScript入门篇,让不懂JS的你,快速了解JS。</p>
23         <p>2. JavaScript进阶篇,让你掌握JS的基础语法、函数、数组、事件、内置对象、BOM浏览器、DOM操作。</p>
24         <p>3. 学完以上两门基础课后,在深入学习JavaScript的变量作用域、事件、对象、运动、cookie、正则表达式、ajax等课程。</p>
25   </div>
26   <form>
27   <!--当点击相应按钮,执行相应操作,为按钮添加相应事件-->
28     <input type="button" value="改变颜色" onclick="aa()">  
29     <input type="button" value="改变宽高" onclick="bb()">
30     <input type="button" value="隐藏内容" onclick="cc()" >
31     <input type="button" value="显示内容" onclick="dd()">
32     <input type="button" value="取消设置" onclick="ee()" >
33   </form>
34   <script type="text/javascript">
35   var txt=document.getElementById("txt");
36 //定义"改变颜色"的函数
37     function aa(){
38         txt.style.color="red";
39     }
40 
41 //定义"改变宽高"的函数
42     function bb(){
43         txt.style.width="30px";
44         txt.style.height="60px";
45     }
46 
47 //定义"隐藏内容"的函数
48     function cc(){
49         txt.style.display="none";
50     }
51 
52 //定义"显示内容"的函数
53     function dd(){
54         txt.style.display="block";
55     }
56 
57 //定义"取消设置"的函数
58     function ee(){
59         var message=confirm("确认取消所有设置么?");
60         if(message==true){
61              txt.removeAttribute('style');
62         }
63     }
64 
65 
66   </script>
67 </body>
68 </html>

运行截图:

posted @ 2018-05-08 14:17  陈爸比  阅读(296)  评论(0编辑  收藏  举报