【JS】快速入门DOM

目录

节点树

DOM属性

DOM方法

操作节点属性

操作节点文本

操作节点样式

事件绑定

节点获取方法

批量添加事件

事件对象

获取鼠标位置


节点树

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

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

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

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

DOM属性

<script type="text/javascript">
    //DOM:常用属性
    //documentElement:获取到节点树的html标签
    console.log(document.documentElement);
    //head:获取到节点树的head标签
    console.log(document.head);
    //title:获取到节点title标签的文本
    console.log(document.title);
    //body:获取到节点body
    console.log(document.body);
  </script>

DOM方法

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

操作节点属性

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

box2
cur

操作节点文本

表单元素:value

其他元素:innerHTML

<script type="text/javascript">
var div=document.getElementById("box");
var inp=document.getElementById("inp");
console.log(inp.value);
console.log(div.innerHTML);
inp.value="默认value";
 </script>

操作节点样式

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

事件绑定

  • onclick||ondblclick

<script type="text/javascript">
var div=document.getElementById("box");
// div.onclick=function()
// {
//    alert("我单击了"); 
// }
div.ondblclick=function()
{
    alert('我双击了');
}
 </script>
  • onmouseenter||onmouseleave

  • onmouseover||onmouseout

<script type="text/javascript">
var div=document.getElementById("box");
// div.onmouseenter=function()
// {
//    alert("我进入了"); 
// }
div.onmouseleaves=function()
{
    alert('我离开了');
}
 </script>
  • onfocus||onblur
<script type="text/javascript">
var input=document.getElementById("inp");
input.onfocus=function()
{
    input.style.color='green';
}
input.onblur=function()
{
    input.style.color='black';
}
 </script>
  •  onmousedown / onmouseup
<script type="text/javascript">
var box=document.getElementById("box");
box.onmousedown =function()
{
    box.style.color='green';
}
box.onmouseup=function()
{
    box.style.color='black';
}
 </script>
  • onmousemove
<script type="text/javascript">
document.onmousedown=function()
{
document.body.style.background="red";

}
document.onmousemove = function()
{
    var R=parseInt(Math.random()*255);
    var G=parseInt(Math.random()*255);
    var B=parseInt(Math.random()*255);
    document.body.style.background="rgb("+R+","+G+","+B+")";
}
document.onmouseup=function()
{
document.body.style.background="black";

}
 </script>

节点获取方法

  1. document.getElementById

  2. document.getElementsByTagName

  3. document.getElementsByClassName

  4. document.getElementsByName

<script type="text/javascript">
var arr=document.getElementsByTagName('li');
for (var i=0;i<arr.length;i++)
{
    arr[i].style.color="red";
}
 </script>

批量添加事件

<script type="text/javascript">
var arr=document.getElementsByTagName('li');
for(var i=0;i<arr.length;i++)
{
    arr[i].onclick=function()
    {
        this.style.color="red";
    }
}
 </script>

事件对象

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

获取鼠标位置

  • screenX||screenY
<script type="text/javascript">
   //获取节点
   var inn = document.querySelector('.inner');
   //鼠标在整个网页当中移动
   document.onmousemove = function(event){
   	    //短路语法进行兼容
   	    var e = event||window.event;
   	    inn.innerHTML  = "screenX:"+ e.screenX + "screenY"+e.screenY;
   }
</script>
  • pageX||pageY
<script type="text/javascript">
   //获取节点
   var inn = document.querySelector('.inner');
   //鼠标在整个网页当中移动
   document.onmousemove = function(event){
   	    //短路语法进行兼容
   	    var e = event||window.event;
   	    inn.innerHTML  = "screenX:"+ e.screenX + "screenY"+e.screenY+"<br/>";
   	    inn.innerHTML  += "pageX:"+e.pageX +"pageY:"+e.pageY;
   }
</script>
  • clientX||clinetY
  • offsetX||offsetY
<script type="text/javascript">
   //获取节点
   var inn = document.querySelector('.inner');
   //鼠标在整个网页当中移动
   document.onmousemove = function(event){
   	    //短路语法进行兼容
   	    var e = event||window.event;
   	    inn.innerHTML  = "screenX:"+ e.screenX + "screenY"+e.screenY+"<br/>";
   	    inn.innerHTML  += "pageX:"+e.pageX +"pageY:"+e.pageY+"<br/>";
   	    inn.innerHTML +="clientX"+e.clientX +"clinetY"+e.clientY+"<br/ >";
   	    inn.innerHTML +="offsetX"+e.offsetX +"offsetY"+e.offsetY;
   }
</script>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coleak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值