【JS】快速入门DOM

简介: 【JS】快速入门DOM

节点树

概述:节点即为标签。节点之间这种关系,我们称之为‘节点树’。因为很想一颗大树扎根。

DOM【document object model】:文档对象模型,你可以理解为是整个节点树最外层‘根元素’。

DOM其实就是JS语言中内置引用类型document对象,DOM对象经常用来操作节点(标签)

比如:操作节点样式、属性、文本等等。

DOM属性

1. <script type="text/javascript">
2. //DOM:常用属性
3. //documentElement:获取到节点树的html标签
4. console.log(document.documentElement);
5. //head:获取到节点树的head标签
6. console.log(document.head);
7. //title:获取到节点title标签的文本
8. console.log(document.title);
9. //body:获取到节点body
10. console.log(document.body);
11.   </script>

DOM方法

  1. getElementById方法:可以通过标签ID选择器获取对应节点。
  2. 一般我们将script标签放在程序最底部。
  3. 不管节点(标签)在网页中嵌套关系如何复杂。都可以通过这个方法获取到。
  4. 注意:标签(节点)在JS当中属于引用类型数据。
1. <script type="text/javascript">
2. //getElementById方法:可以获取到节点树上任意节点
3. //【需要给标签添加id属性,通过id选择器获取】
4. var element = document.getElementById("box");
5. var eleCur = document.getElementById("cur");
6. var eleLi = document.getElementById("me");
7. console.log(element);
8. console.log(eleCur);
9. console.log(eleLi);
10. console.log(typeof element);
11.  </script>

操作节点属性

1. <script type="text/javascript">
2. var div=document.getElementById("box");
3. div.id='box2';
4. console.log(div.id);
5. console.log(div.className);
6.  </script>

box2

cur

操作节点文本

表单元素:value

其他元素:innerHTML

1. <script type="text/javascript">
2. var div=document.getElementById("box");
3. var inp=document.getElementById("inp");
4. console.log(inp.value);
5. console.log(div.innerHTML);
6. inp.value="默认value";
7.  </script>

操作节点样式

  • 行内样式
<div id="box" style="width: 60px;color: red;background-color: aquamarine;">coleak1</div>
  • 内部样式
  • 外部样式(link引入)
1. <script type="text/javascript">
2. var div=document.getElementById("box");
3. console.log(div.style['width']);
4. div.style['width']="900px";
5.  </script>

事件绑定

  • onclick||ondblclick
1. <script type="text/javascript">
2. var div=document.getElementById("box");
3. // div.onclick=function()
4. // {
5. //    alert("我单击了"); 
6. // }
7. div.ondblclick=function()
8. {
9. alert('我双击了');
10. }
11.  </script>
1. <script type="text/javascript">
2. var div=document.getElementById("box");
3. // div.onmouseenter=function()
4. // {
5. //    alert("我进入了"); 
6. // }
7. div.onmouseleaves=function()
8. {
9. alert('我离开了');
10. }
11.  </script>
  • onfocus||onblur
1. <script type="text/javascript">
2. var input=document.getElementById("inp");
3. input.onfocus=function()
4. {
5.     input.style.color='green';
6. }
7. input.onblur=function()
8. {
9.     input.style.color='black';
10. }
11.  </script>
  • onmousedown / onmouseup
1. <script type="text/javascript">
2. var box=document.getElementById("box");
3. box.onmousedown =function()
4. {
5.     box.style.color='green';
6. }
7. box.onmouseup=function()
8. {
9.     box.style.color='black';
10. }
11.  </script>
  • onmousemove
1. <script type="text/javascript">
2. document.onmousedown=function()
3. {
4. document.body.style.background="red";
5. 
6. }
7. document.onmousemove = function()
8. {
9. var R=parseInt(Math.random()*255);
10. var G=parseInt(Math.random()*255);
11. var B=parseInt(Math.random()*255);
12. document.body.style.background="rgb("+R+","+G+","+B+")";
13. }
14. document.onmouseup=function()
15. {
16. document.body.style.background="black";
17. 
18. }
19.  </script>

节点获取方法

  1. document.getElementById
  2. document.getElementsByTagName
  3. document.getElementsByClassName
  4. document.getElementsByName
1. <script type="text/javascript">
2. var arr=document.getElementsByTagName('li');
3. for (var i=0;i<arr.length;i++)
4. {
5.     arr[i].style.color="red";
6. }
7.  </script>

批量添加事件

1. <script type="text/javascript">
2. var arr=document.getElementsByTagName('li');
3. for(var i=0;i<arr.length;i++)
4. {
5.     arr[i].onclick=function()
6.     {
7. this.style.color="red";
8.     }
9. }
10.  </script>

事件对象

  1. 当事件处理函数执行的时候,系统会自动注入实参,我们用形参接受【事件对象】
  2. 在不同浏览器中事件对象是有兼容问题。使用短路语句进行兼容。
1. <script type="text/javascript">
2. //获取节点
3. var div = document.querySelector("div");
4.     div.onclick = function(event){  
5. //对于高级浏览器:谷歌、IE8以上的浏览器---->event
6. //对于低级浏览器:IE8以下的,事件对象作为BOM对象属性
7. var e = event||window.event;
8. console.log(e);
9.     }
10.   </script>

获取鼠标位置

  • screenX||screenY
1. <script type="text/javascript">
2. //获取节点
3. var inn = document.querySelector('.inner');
4. //鼠标在整个网页当中移动
5. document.onmousemove = function(event){
6.      //短路语法进行兼容
7.      var e = event||window.event;
8.          inn.innerHTML  = "screenX:"+ e.screenX + "screenY"+e.screenY;
9.    }
10. </script>
  • pageX||pageY
1. <script type="text/javascript">
2. //获取节点
3. var inn = document.querySelector('.inner');
4. //鼠标在整个网页当中移动
5. document.onmousemove = function(event){
6.      //短路语法进行兼容
7.      var e = event||window.event;
8.          inn.innerHTML  = "screenX:"+ e.screenX + "screenY"+e.screenY+"<br/>";
9.          inn.innerHTML  += "pageX:"+e.pageX +"pageY:"+e.pageY;
10.    }
11. </script>
  • clientX||clinetY
  • offsetX||offsetY
1. <script type="text/javascript">
2. //获取节点
3. var inn = document.querySelector('.inner');
4. //鼠标在整个网页当中移动
5. document.onmousemove = function(event){
6.      //短路语法进行兼容
7.      var e = event||window.event;
8.          inn.innerHTML  = "screenX:"+ e.screenX + "screenY"+e.screenY+"<br/>";
9.          inn.innerHTML  += "pageX:"+e.pageX +"pageY:"+e.pageY+"<br/>";
10.         inn.innerHTML +="clientX"+e.clientX +"clinetY"+e.clientY+"<br/ >";
11.         inn.innerHTML +="offsetX"+e.offsetX +"offsetY"+e.offsetY;
12.    }
13. </script>


目录
相关文章
|
7天前
|
JavaScript 前端开发
js之DOM 文档对象模型
js之DOM 文档对象模型
8 1
js之DOM 文档对象模型
|
8天前
|
XML JavaScript 前端开发
JavaScript中的DOM解析器DOMParser api的讲解
`DOMParser`能将XML或HTML源码字符串解析成DOM `Document`。通过`new DOMParser()`创建实例,使用`.parseFromString(string, type)`方法进行解析,其中`string`为待解析的字符串,`type`指定解析类型如`text/html`或`text/xml`等,返回一个`Document`对象。例如,可解析包含`&lt;p&gt;666&lt;/p&gt;`的字符串并获取其文本内容`666`。
13 1
|
4天前
|
JavaScript 前端开发
js之DOM 文档对象模型
js之DOM 文档对象模型
|
7天前
|
JavaScript 前端开发 容器
js之dom学习
js之dom学习
13 0
|
1月前
|
JavaScript
js HTML字符串转DOM节点,DOM节点转HTML字符串
js HTML字符串转DOM节点,DOM节点转HTML字符串
22 2
|
2月前
|
JavaScript 前端开发 算法
虚拟DOM是React的关键技术,它是个轻量的JS对象树,模拟实际DOM结构。
【6月更文挑战第27天】虚拟DOM是React的关键技术,它是个轻量的JS对象树,模拟实际DOM结构。当状态改变,React不直接修改DOM,而是先构建新的虚拟DOM树。通过 diff 算法比较新旧树,找到最小变更,仅更新必要部分,提高性能,避免频繁DOM操作。虚拟DOM还支持跨平台应用,如React Native。它优化了更新流程,简化开发,并提升了用户体验。
26 1
|
1月前
|
缓存 JavaScript API
js【详解】DOM
js【详解】DOM
13 0
|
1月前
|
JavaScript 前端开发
JavaScript 遍历DOM
JavaScript 遍历DOM
20 0
|
1月前
|
SQL 前端开发 JavaScript
JavaScript快速入门 有这一篇就够!
JavaScript快速入门 有这一篇就够!
|
1月前
|
存储 JavaScript 前端开发
如何快速入门使用Vue.js
如何快速入门使用Vue.js
23 0