DOM操作 和 BOM操作

DOM操作 和 BOM操作

  • DOM操作
    JavaScript 提供的 操作 html文件的方法
  • BOM操作
    JavaScript 提供的 操作 浏览器的方法

DOM操作之获取标签对象

推荐使用方式  对于低版本IE不兼容
    document.querySelector('条件');
        获取符合条件的第一个标签对象
        执行结果是 一个独立的标签对象 
        可以直接操作这个独立的标签对象
         如果没有符合条件的标签对象 结果是 null

    document.querySelectorAll('条件');
        获取符合条件的所有标签对象
        执行结果是一个 伪数组
        伪数组的单元 存储的具体数据 是 一个独立的标签对象
        伪数组 不能直接操作 
        可以通过 []语法 获取一个独立的标签对象 再操作
        还可以通过 循环语法 循环遍历 操作所有的标签对象

        获取的伪数组 可以使用 forEach循环遍历

        可以自己试试 使用 for循环 for...in循环 for...of循环

        如果没有符合条件的标签 结果是 length 为 0 的 空 伪数组


条件可以写 所有 html 和 css 支持的语法形式
    ('标签名称')
    ('#id属性值')
    ('.class属性值')
    ('[属性="属性值"]')
    ('ul>li')
    ('ul li')
    ('ul li:nth-child(1)')
    ('div + p')
    ('div ~ p')


总结: JavaScript 对于 标签对象的操作 一定是 对 独立的标签对象的操作
     不能直接对 标签对象 伪数组 进行操作

补充说明:
    所谓的伪数组 
        支持 []语法 和 length 属性
        可以执行的函数方法 和 数组不同

DOM操作

  1,  本质是 获取 和 操作 设定  标签对象

  2,  获取 标签对象
      方便的,不兼容低版本IE的
          document.querySelector('条件');
              独立的标签对象
              可以直接操作
          document.querySelectorAll('条件');
              标签对象伪数组
              []语法获取一个独立的标签对象 或者 循环遍历操作
              支持 forEach

      兼容所有浏览器的
          document.getElementById('id属性值');
              独立的标签对象
          document.getElementsByClassName('class属性值');
              标签对象伪数组 
              不能forEach
          document.getElementsByTagName('标签名称');
              标签对象伪数组 
              不能forEach
          document.getElementsByName('name属性值');
              标签对象伪数组 
              可以forEach
      特殊标签
          document.documentElement
              html标签
          document.body
              body标签
          document.head
              head标签
          document.title
              title标签的内容

  3,  操作设定标签
      (1) 内容
          标签对象.innerHTML
              支持解析标签
          标签对象.innerText
              不支持解析标签
          标签对象.value
              标签的数据

      (2) 标签属性

          标签支持的
              标签对象.属性

              id,class,title  标签的布尔属性

          标签不支持的
              标签对象.setAttribute('属性' , 属性值)
                  设定
              标签对象.getAttribute('属性')
                  获取
              标签对象.removeAttribute('属性')
                  删除

      (3) class操作方法
          标签对象.className 直接操作和设定
          
          标签对象.classList.add()
              原始属性值基础上新增

          标签对象.classList.remove()
              原始属性值基础上删除

          标签对象.classList.toggle()
              原始属性值基础上切换

          标签对象.classList.replace(属性值1 , 属性值2)
              原始属性值基础上替换

      (4) 样式
          设定
              标签.style.属性 = 属性值
                  设定的是行内样式

          获取
              标签.style.属性
                  只能获取 行内样式属性

              window.getComputedStyle(标签).属性
                  标准浏览器获取执行属性

              标签.currentStyle.属性
                  IE浏览器获取执行属性

      (5) 标签占位

          标签.offsetWidth
          标签.offsetHeight
              内容+padding+border

          标签.clientWidth
          标签.clientHeight
              内容+padding

          标签.clientTop
          标签.clientLeft
              border 上 左

          标签.offsetTop
          标签.offsetLeft
              定位父级 上 左

BOM操作_三大弹窗

  • window.alert()
    警告框

  • window.prompt()
    输入框

  • window.confirm()
    确认框
    点击确定返回值是 true
    点击取消返回值是 false

BOM操作_获取浏览器相关数据

浏览器的相关数据
浏览器上卷 左移 的 距离

有文档类型声明
   document.documentElement.scrollTop
   document.documentElement.scrollLeft

没有文档类型声明
   document.body.scrollTop
   document.body.scrollLeft

总有一个数值 是 0 另一个 可以获取到正确的数据
可以使用 逻辑赋值 ||
var 变量 = document.documentElement.scrollTop || document.body.scrollTop

浏览器视窗窗口宽度高度

包含滚动条 
   window.innerWidth
   window.innerHeight

不包含滚动条
   有文档类型声明
   document.documentElement.clientWidth
   document.documentElement.clientHeight

   没有文档类型声明
   document.body.clientWidth
   document.body.clientWidth

总结兼容语法:
一种情况有值 一种情况没有值
使用 逻辑或 做 逻辑赋值

一种情况有 这个方法 一种情况 没有这个方法
使用 if判断 做兼容

BOM操作常见事件:

 鼠标事件
     click           左键单击
     dblclick        左键双击
     contextmenu     右键单击

     mousedown       鼠标按键按下
     mouseup         鼠标按键抬起
     mousemove       鼠标按键移动

     mouseover       鼠标移入
     mouseout        鼠标移出

     mouseenter      鼠标移入
     mouseleave      鼠标移出

 键盘事件

     keydown         按键按下
     keyup           按键抬起
     keypress        类似按键按下


 表单事件

     focus           获取焦点事件
     blur            失去焦点事件
     change          失去焦点并且数据改变事件
     input           输入事件
     submit          提交事件

 触摸事件
     只有移动端设备支持事件
         手机 pad...

     touchstart     触摸开始
     touchend       触摸结束
     touchmove      触摸移动

 特殊事件

     transitionstart    过渡开始
     transitionend      过渡结束

     animationstart     动画开始
     animationend       动画结束
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半生过往

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

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

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

打赏作者

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

抵扣说明:

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

余额充值