JS DOM基础----

Js DOM

DOM简介

  1. 文档类型(Document Object),W3C组织推荐的处理可扩展标记语言(指HTML或XML)的标准编程接口
  2. 作用:通过DOM接口可以改变网页的内容,结构,样式
  3. DOM树:HTML DOM模型被结构化为对象树
    • 文档:整个页面是一个文档,DOM中使用document表示
    • 元素:页面中的所有标签都是元素,在DOM中使用element表示
    • 节点:网页中的多有内容都是节点(标签,属性,文本,注释等),DOM中使用node表示

HTML DOM方法

  1. 概念:HTML DOM 方法是能够(在 HTML 元素上)执行的动作
  2. HTML DOM 属性是能够设置或改变的 HTML 元素的值

操作元素

  1. element.innerText:

    • 从起始位置到终止位置的内容,去除html和空格换行符

    • 不识别HTML标签,加入标签会被直接显示 非标准

    • 可读写

  2. element.innerHTML

    • 从起始位置到终止位置的全部内容,包括HTML标签,同时保留空格和换行符

    • 识别HTML标签 w3c标准

    • 可读写 可以获取元素里的内容

  3. 操作元素修改表单属性

    • value属性 改变表单文字内容 input.value = ‘’
    • type属性
    • checked默认选择
    • disabled 禁用
    • selected

dom重点核心

  1. 创建:

    • document.write
    • innerHTML
    • createElement
  2. 增加

    • appendChild 可向节点的子节点列表的末尾添加新的字节点
    • insertBefore insertBefore() 方法可在已有的子节点前插入一个新的子节点
    • document.createElement(element)创建 HTML 元素
    • document.removeChild(element)删除 HTML 元素
    • document.appendChild(element)添加 HTML 元素
    • document.replaceChild(element)替换 HTML 元素
    • document.write(text)写入 HTML 输出流
    • removeChild
    • 修改元素的属性:src ,href ,title
    • 修改普通元素内容:inner HTML,innerText
    • 修改表单元素:value,type,disabled
    • 修改元素样式:style,className
    • 改变HTML元素的属性值 element.attribute = new value
    • 改变HTML元素的属性值 element.setAttribute(attribute , value)
    • 改变HTML元素的样式 element.style.property
    • 获取DOM元素:API方法:
    • getElementById()通过元素id来查找元素
    • getElementGyTagName()通过标签名来查找元素
    • getElementByClassName()通过类名来查找元素
    • H5提供的新方法:querySelector,querySeletorAll
    • 利用接待你操作元素:父(parentNode),子(children),兄(previousElementSibling),(nextElementSibling)
  3. 属性操作

    • setAttribute:设置dom的属性值
    • getAttribute:得到dom的属性值
    • removeAttribute:移除属性
    • getAttributeNode:获取属性
  4. 事件操作

    • 注册事件,采取事件源.事件类型 = 事件处理程序

    • 鼠标事件触发条件
      onclick点击触发
      onmouseover鼠标经过触发
      onmousout鼠标离开触发
      onfocus获得鼠标焦点触发
      onblur失去鼠标焦点触发
      onmousemove鼠标移动触发
      onmouseup鼠标弹起触发
      onmousedown鼠标按下触发
      dbclick鼠标双击

事件基础

  1. 简单理解:触发响应的一种机制

  2. 事件组成:事件源,事件类型,事件处理程序

    • 事件源:事件被触发的对象 谁被触发

    • 事件类型:如何让触发,什么事件:如点击鼠标(onclick)

    • 事件处理程序:函数赋值的方式完成 如何完成

  3. <button id = btn>dianji </button>
    <script>
    var btn = document.getElementByid('btn')
    btn.onclick =function(){
    alert('')
    }
    </script>
    
    
  4. 事件执行步骤

    • 获取事件源

    • 注册事件(绑定事件)

    • 添加事件处理程序(采取函数赋值形式)

      <div>123</div>
      <script>
      //获取事件源
      var div = document.querySEelector('div')
      //注册事件
      div.onclick =  myFunction;
       //添加事件处理程序
      function myFunction(){
          alert('123')
      }
      </script>
      

事件

  1. 低级事件:无条件触发 例如鼠标按下 按键事件的键盘按下

  2. 高级事件:有条件触发 单价及双击 按下弹起

  3. 注册事件

    • 传统:on开头的事件 注册事件的唯一性 同一元素同一事件只能设置一个处理函数 后边覆盖前边的

    • 监听事件:addEventListener(type,listener,useCapture)可以添加多个事件处理程序

    • type:事件类型

    • listener:事件处理函数

    • useCapture:

    • btns.addEventListener('click',function(){//事件类型是字符串 且不带on
          alert(123)
      })
      
    • btns.attachEvent('onclick',function(){
          alert(123)
      })//i9以前支持
      detachEvent//删除
      
  4. 删除事件

    • 传统方式: ‘onclick = null’

    • 监听事件

      btns.removeEventListener('click',fn)   //不需要些函数调用                 
      function fn(){//事件类型是字符串 且不带on
          alert(123)
      }
      

DOM事件流

  1. 事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流

  2. DOM事件流分为三个阶段 :

    • 捕获阶段:网景提出 由DOM的顶层节点开始,逐级向下传播到最具体的元素接受的过程
    • 当前目标阶段
    • 冒泡阶段:IE提出 事件开始由具体元素接收,然后逐级向上传播到DOM的最顶层节点的过程
  3. 验证

    <div class = father>
        <div class = son></div>
    </div>
    
    true捕获阶段
    btns.addEventListener('click',function(){//事件类型是字符串 且不带on
        alert(123)
    } true)//有父元素绑定才会显示  true捕获阶段
    false捕获阶段
    btns.addEventListener('click',function(){//事件类型是字符串 且不带on
        alert(123)
    } false) false//冒泡阶段
    

事件对象

  1. event 事件对象 当作形参来看 有了事件才会存在 系统自动创建 不需要传参数

  2. 事件对象时一系列事件的相关集合

    div.addEvenrListerner('click',function(event){
        log(event)
    })
    window.event//ie678
    兼容性写法:
    e = e || window.event;
    
  3. 可简写 evt,e

  4. target 和 this的区别

    • e.target:返回触发时间的属性和元素 指向点击的对象
    • this返回绑定事件的对象
    • e,srcElement//ie678
  5. 常用事件对象属性

    • 和this相似的属性currentTarget 指向绑定事件者
    • e.type:返回事件类型
  6. 阻止默认行为

    • e.preventDefault(): 阻止默认行为
    • returnValue//低版本做法
    • return false //后边的代码不再执行
  7. 阻止冒泡

    • stopPropagation()://停止传播 canceelBubble//取消 泡泡 ie678使用
  8. 事件委托

    • 事件冒泡带来的好处
    • 不给没个子节点设置事件监听器,而是事件监听器设置在父结点上,利用冒泡原理设置每个字节点
    • 只操作一次dom 程序性能提高
    • e.target.style.color = pink
  9. 禁止选中文和禁止右键

    • contextmenu
    document.addEventLisener('contextmenu',funciton(e){
     e.preventDefault//禁止右键
                             })
    
    • selectstart:开始选中

      document.addEventLisener('selectstart',funciton(e){
       e.preventDefault//禁止选中文字
                               }

    鼠标点击事件

    1. 天使跟随鼠标移动

      • <style>
            img{
                position:absolute;
                top:2px;
            }
        </style>
        <div>
            <img>
        </div>
        <script>
            var pic = document.querySelectoe('img');
        document.addEventLisener('mousemove',function(e){//移动1px触发一次
            var x = e.padeX;
            var y = e.pageY;
            pic.style.left = x - 50 + 'px'//鼠标在中间
            pic.style.top = y - 40 + 'px'})
        </script>
        

常用键盘事件

  1. document.addEventLisener('keyup',funvtion(){
      alert()
     })
    
  2. 上述三个都写 执行顺序down ==》press ==》up

  3. 键盘事件对象

    • document.addEventLisener('keyup',funvtion(e){
         console.log(e.keyCode)
         console.log(e.keypress)
      //keyCode 返回ASCll值
      if(e.ketCode == 65){
          alert('按了a')
      }else{
          alert('没有按a')
      }
       })
      
    • keyup和keydown不区分字母大小写 keypress区分大小写

    • 利用keyCode判断用户按下哪个键 e.charCode e.which 取字符的编码

    • keydown和keypress在文本框的特点:事件触发时文字还没有落入文本框中 可以在这里阻止字符输入 最好keypress中禁用

    • event.altkey e.ctrlkey e.shiftkey 返回布尔值,检测对应功能键是否被按下

表单事件

  1. subimt

  2. reset

  3. change:提交值发生改变时

  4. iput

Math对象

  1. 值类型 数字 字符串 布尔 空 somby

  2. 引用类型:Object,Function Date Array Math Regexp

  3. Math对象不可以全新建立 只能直接使用

  4. Math.E自然常数

  5. Math.abs 绝对值

  6. Math.pow()x的y次方

  7. Math.max

  8. Math.min

  9. 三角函数使用比较多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值