Dom本质

一:题目

1.DOM是哪种基本的数据结构?

解答:数

2.DOM操作的常用API有哪些?

解答:获取DOM节点,以及节点的propery和attribute、获取父节点,获取子节点、新增节点、删除节点

3.DOM节点的attr和property有何区别?

解答:property是DOM中的属性,修改的是js中标准的属性。例如:对象中的name,age,addresss。attribute是HTML标签上的特性,修改的是Html标签的特性。例如:width,height,class,attr-name

二:知识点

1.DOM的本质:DOM可以理解为浏览器把拿到的html代码,结构化一个浏览器能识别并且js可操作的一个模型而已。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <div>这是内容</div>
11 </body>
12 </html>

 

2.获取DOM节点:a:prototype  b:attribute

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <div id="div1">这是div1的内容</div>
11     <div>这是div2222的内容</div>
12     <div>这是div3333的内容</div>
13     <div class="ip_addr">这是div4444的内容</div>
14     <div class="ip_addr">这是div555的内容</div>
15     <div class="ip_addr">这是div666的内容</div>
16 </body>
17 <script>
18 var div1 = document.getElementById('div1') // 元素
19 console.log(div1)
20 var divList = document.getElementsByTagName('div')  // 集合
21 console.log(divList.length)
22 console.log(divList[3])
23 var ip_addrs = document.getElementsByClassName('ip_addr')  // 集合
24 console.log(ip_addrs.length)
25 console.log(ip_addrs[2])
26 var all = document.querySelectorAll('div')  // 集合
27 console.log(all.length)
28 console.log(all[3])
29 </script>
30 </html>

property操作

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <div id="div1" style="width: 100px;height:100px" class="a">这是div1的内容</div>
11     <div  style="width: 200px;height:200px" class="b">这是div2222的内容</div>
12     <div  style="width: 300px;height:300px" class="c">这是div3333的内容</div>
13     <div  style="width: 400px;height:400px" class="d">这是div4444的内容</div>
14     <div  style="width: 500px;height:500px" class="e">这是div555的内容</div>
15     <div  style="width: 600px;height:600px" class="f">这是div666的内容</div>
16 </body>
17 <script>
18 var all = document.querySelectorAll('div')  // 集合
19 for(let i=0;i<all.length;i++){
20     var index = i+1
21     console.log(''+index+'个div的宽和高是:')
22     console.log(all[i].style.width)  // 获取样式
23     console.log(all[i].style.height)
24     console.log(all[i].className)
25     console.log(all[i].nodeName)
26     console.log(all[i].nodeType)
27 }
28 all[3].style.width='10px'  // 修改样式
29 all[3].style.height='10px'
30 console.log(all[3])
31 </script>
32 </html>

Attribute操作

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <div attr-name='zhangsan' id="div1" style="width: 100px;height:100px" class="a">这是div1的内容</div>
11     <div attr-name='lisi' style="width: 200px;height:200px" class="b">这是div2222的内容</div>
12     <div attr-name='wangwu' style="width: 300px;height:300px" class="c">这是div3333的内容</div>
13     <div  style="width: 400px;height:400px" class="d">这是div4444的内容</div>
14     <div  style="width: 500px;height:500px" class="e">这是div555的内容</div>
15     <div  style="width: 600px;height:600px" class="f">这是div666的内容</div>
16 </body>
17 <script>
18 var all = document.querySelectorAll('div')  // 集合
19 console.log(all[0].getAttribute('attr-name'))  // 打印zhangsan
20 console.log(all[1].getAttribute('attr-name'))  //打印lisi
21 all[0].setAttribute('attr-name', 'hello word')
22 console.log(all[0].getAttribute('attr-name'))  // 打印hello word
23 </script>
24 </html>

 

三:DOM结构操作

1.新增节点

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10 <div id="div1" style="border: 1px solid green;">div1的内容</div>
11 <p id="p2">这是p2</p>
12 </body>
13 <script>
14 var div1 = document.getElementById('div1')  // 获取节点
15 var p1 = document.createElement('p') // 创建新节点
16 p1.innerText = 'this is p1'  //内容赋值
17 div1.appendChild(p1) // 把p1添加到div1中
18 var p2 = document.getElementById('p2') // 获取p2节点
19 div1.appendChild(p2) // 把p2添加到div1
20 </script>
21 </html>

2.获取父元素和子元素

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10 <div>
11     我是父元素
12     <div id="div1">div1的内容
13             <div>
14                     我是子元素
15                 </div>
16     </div>
17 </div>
18 </body>
19 <script>
20 var div1 = document.getElementById('div1')
21 var parent = div1.parentElement  // 只能有一个父元素
22 var children = div1.childNodes  //可以有多个子元素
23 console.log(parent)
24 console.log(children[1])
25 </script>
26 </html>

 

3.删除节点

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10 <div>
11     我是父元素
12     <div id="div1">div1的内容
13             <div>
14                     我是子元素
15                 </div>
16     </div>
17 </div>
18 </body>
19 <script>
20 var div1 = document.getElementById('div1')
21 var children = div1.childNodes  //可以有多个子元素
22 div1.removeChild(children[1])  // 移除元素
23 </script>
24 </html>

 

转载于:https://www.cnblogs.com/zhswater/p/11161368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值