Js-DOM

本文详细介绍了JavaScript中DOM的概念,包括如何获取元素、处理事件、进行元素操作,如属性和样式修改,以及节点操作、事件操作。同时,深入探讨了DOM事件流和事件对象,特别是元素的偏移量、可视区和滚动属性的应用。
摘要由CSDN通过智能技术生成

目录

一、概念

二、 使用

(一)获取元素

(二)事件(鼠标)

(三)操作

1、属性操作

2、样式操作

(四)节点操作

1、父节点

2、子节点

3、兄弟节点

4、创建节点&添加节点

5、删除节点

6、复制节点

(五)事件操作

1、注册事件onclick/addEventListener

2、删除事件(解绑事件)

三、DOM事件流 

 四、事件对象

(一)元素偏移量offset

1、概述

2、常用属性:

 3、offset与style属性的区别

(二)元素可视区client

1、概述

2、属性

(三)元素滚动scroll

1、属性

 2、滚动事件onscroll



一、概念

D:        Document文档        -表示的就是整个HTML网页文档

O:     Object对象              -表示将网页中的每一个部分都转换为了一个对象

M:     Model模型               -使用模型来表示对象之间的关系,这样方便我们获取对象

JS中通过DOM来对HTML文档进行操作

二、 使用

(一)获取元素

根据?获取操作结果
IDdocument.getElementById('id')返回对象
标签名document.getElementByTagName('tag')返回对象集合
类名document.getElementByClassName('class')集合
document.querySelector('.box')第一个盒子
document.querySelectorAll('.box')所有盒子
获取bodydocument.body
获取htmldocument.documentElement

(二)事件(鼠标)

代码对应事件
onclick点击左键
onmouseover经过
onmouseout离开
onfocus获得焦点
onblur失去焦点
onmousemove移动
onmouseup

弹起

onmousedown按下

鼠标实现模块拖拽:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script>
    // 将事件放入windowload内,实现等界面加载完毕再绑定事件
    window.onload = function () {
      // 获取box对象
      var box = document.getElementById('box');
      // 鼠标按下
      box.onmousedown = function (event) {
        event = event || window.event;
        // 获取偏移量
        var offsetx = event.clientX - box.offsetLeft;
        var offsety = event.clientY - box.offsetTop;
        // 鼠标移动
        document.onmousemove = function (event) {
          event = event || window.event;
          // 盒子最终位置 = 鼠标坐标 - 偏移量
          var x = event.clientX - offsetx;
          var y = event.clientY - offsety;
          box.style.left = x + 'px';
          box.style.top = y + 'px';
        }
        // 鼠标弹起,销毁移动和弹起事件
        document.onmouseup = function () {
          document.onmousemove = null;
          document.onmouseup = null;
        }
      }
    }
  </script>
</head>
<body>
  <div id="box"></div>
</body>
</html>

<style>
  #box {
    position: absolute;
    height: 50px;
    width: 50px;
    background-color: red;
  }
</style>

(三)操作

1、属性操作

        div:

element.innerText = ''对元素中文字进行赋值不识别html标签
element.innerHTML = ''识别html标签

        获取属性:

element.属性针对内置属性
element.getAttribute('属性')针对程序员自定义属性

         赋值/移除自定义属性

element.属性 = '值'
element.setAttribute('属性', '值')自定义
element.removeAttribute('index')

2、样式操作

element.style.backgroundColor = 'purple' 利用css直接对样式进行修改
element.classname = 'change'将css中提前写好的样式赋予元素实现样式的修改

(四)节点操作

1、父节点

        parentNode        最近的父节点

2、子节点

        childNodes        返回包含指定节点子节点的集合(所有,包含元素节点、文本节点(换行符)等)

        只找元素子节点:             ul.children

        可以按照index选择:        ul.children[0],即为选择第一个子

3、兄弟节点

nextElementSibling下一个兄弟节点
previousElementSibling上一个兄弟节点

4、创建节点&添加节点

createElement('tagName')创建一个元素节点
appendchild(child)用父节点调用:在父节点的末尾插入一个新的子节点

insertBefore(元素节点,位置)

insertBefore(child, ul.children[0])

在指定位置前插入

5、删除节点

        removeChild(child)        返回删除的节点

6、复制节点

        ul.children[0].cloneNode(空/false/true)         //克隆后需利用appendChild址类的方法添加节点                        true:深拷贝,全部复制

                      空/false:浅拷贝,只复制标签,不复制标签内容

(五)事件操作

1、注册事件onclick/addEventListener

eventTarget.addEventlistener(type, listener[  , uselapture])

type事件类型,eg“click”=“onclick”,还有“mouseover”等类型
listener函数,事件发生时调用
usecapture可选参数ture        捕获阶段执行(一般不用)
false        默认,冒泡阶段执行
// 平时常用格式
btn.addEventListener('click', function () {
      alert('hello');
    }, false)

2、删除事件(解绑事件)

  • 传统方式:

                div.onclick = null;

  • eventTarget.removeEventlistener(type, listener [  , uselapture]);

                eg: div.removeEventlistener('click', fn);                //“fn”为提前写好的函数        

三、DOM事件流 

按顺序执行监听事件

 

 所谓的冒泡指的就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发;在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象来取消冒泡

 四、事件对象

div.onclick = function(event){}                //“event”在使用时通常用‘e’代替,在写侦听函数中,当作形参,事件一系列相关数据的集合,例如鼠标点击就包含鼠标点击事件的相关信息(坐标等)

e.target返回触发事件的对象标准
e.srcElement非标准,ie6-8使用
e.type返回事件类型
e.cancelBubble阻止冒泡非标准,ie6-8使用
e.returnValue阻止默认事件非标准,ie6-8使用
e.preventDefault非标准,ie6-8使用(比如不让链接跳转)
e.stopPropagation阻止冒泡标准
e.clientx/clienty返回对象当前坐标x、y

(一)元素偏移量offset

1、概述

  • 获得元素距离带有定位父元素的位置
  • 获得元素自身的大小(宽度高度)
  • 注意:返回的数值都不带单位

2、常用属性:

offset系列属性作用
element.offsetParent

返回作为该元素带有定位的父级元素,

如果父级都没有定位则返回body

element.offsetTop返回元素相对带有定位父元素上方的偏移
element.offsetLeft返回元素相对带有定位父元素左边框的偏移
element.offsetWidth

可以得到元素的大小:宽度和高度,

包含padding+border+width/height

element.offsetHeight

 3、offset与style属性的区别

offsetstyle
可以得到任意样式表中的样式值只能得到行内样式表中的样式值
获得的数值没有单位获得的是带有单位的字符串
offsetWidth包含padding和border的值style.width不包含padding和border
offsetWidth等属性只读,只能获取不能赋值style.width可读可写,可以获取可以赋值
想要获取元素大小位置,用offset合适想要给元素更改样式值,用style改变

(二)元素可视区client

1、概述

client翻译过来就是客户端,我们使用client系列的相关属性来获取元素可视区的相关信息。通过client系列的相关属性可以动态地得到该元素的边框大小、元素大小等。

2、属性

系列属性作用
element.clientTop返回元素上边框的大小
element.clientLeft返回元素左边框的大小
element.clientWidth返回自身包括内容区的宽/高度、padding,但不含边框,返回数值不带单位
element.clientHeight

(三)元素滚动scroll

1、属性

系列属性作用
element.scrollTop返回被卷去的上/左侧距离,返回数值不带单位
element.scrollLeft
element.scrollWidth返回自身实际的宽/高度,不含边框,返回值不带单位
element.scrollHeight

 2、滚动事件onscroll

div.addEventListener('scroll', function(){});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值