DOM和BOM一些基础用法

DOM

DOM常用节点类型

元素节点 - 1;属性节点 - 2;文本节点 - 3;注释节点 - 8;文档节点 - 9

查看节点

  • 查看元素下的子节点

    • el.children 子元素(不是标准中的操作)

      ​ lastElementChild 最后一个子元素

    • el.childNodes 子节点(包括空白内容和转行内容)

  • 查看元素的父元素(父节点)

    • el.parentNode
  • 下一个兄弟元素

    • nextElementSibling 下一个兄弟元素(nextSibling 下一个兄弟节点,包括文本节点)
  • 上一个兄弟元素

    • previousElementSibling 上一个兄弟元素 (previousSibling 上一个兄弟节点,包括文本节点)

创建一个元素

object element createElement("tagName");

元素创建完,不添加到页面中的话,看不到它

  • parent.appendChild(el);

    在parent中追加一个子元素el,(把el添加到parent的最末尾),如果操作的是一个已经存在页面中的元素,会把元素从原来的父级下,直接剪切过来

  • parentNode.insertBefore(childNode1,childNode2)

    往一个节点的指定子节点前边插入一个节点,如上:childNode1插入到childNode2前边

删除一个节点

  • parentNode.removeChild(childNodes)

    从一个节点中删除指定的子节点。返回值: 被删除的这个节点

定位父级

el.offsetParent

查找到el根据定位的父级元素,都没有就查找到body

ofset

  • offsetWidth/offsetHeight 可视宽/高
  • offsetTop/offsetLeft 和定位父级之间的偏移

getBoundingClientRect()

  • 获取元素的盒模型信息

    返回值对象 {

    ​ left 元素左侧相对于可视区左侧的距离

    ​ top 元素顶部相对于可视区顶部的距离

    ​ right 元素右侧相对于可视区左侧的距离

    ​ bottom 元素底部相对于可视区顶部的距离

    ​ width 可视宽度

    ​ height 可视高度

  • 获取可视区宽高

    • document.documentElement.clientWidth;//可视区宽度
    • document.documentElement.clientHeight//可视区高度
  • client和offset的区别

    • offsetWidth/offsetHeight //width + padding + border

    • clientWidth/clientHeight //width + padding

    • offsetLeft/offsetTop //和定位父级之间的距离

    • clientLeft/clientTop //元素的边框

属性操作的第三种方法

注意: 尽量不要使用或者减少使用dom的操作,性能不太好

  • node.getAttribute(attr) 获取元素指定属性名的属性值
  • node.setAttribute(attr,value) 设置元素指定属性名的属性值
  • node.removeAttribute(attr) 删除元素的指定属性

特点:可以操作行间自定义的属性;可以获取src,href等的相对地址

节点操作

  • parentNode.replaceChild(node,childNode)
    • node用来替换的节点,childNodes被替换的子节点
  • node.cloneNode(boolean) 克隆一个节点
    • true:克隆元素和元素包含的子孙节点
    • flase:克隆元素到但不包含元素的子孙节点

表格操作

  • table.tHead 获取thead
  • table.tFoot 获取tfoot
  • table.tBodies[i] 获取tbody 注意table可以拥有多个tbody,所以获取到的是一组
  • table.tHead.rows/table.rows 获取tr 注意获取到的是一组
  • table.rows[i].cells 获取单元格 th,td 注意获取到的是一组,单元格要在row里边获取

表单操作

  • input

    • text / radio / checkbox
  • select

  • textarea

    统一使用node.value获取值

获取 radio / checkbox 是否选中用node.checkbox

表单事件
  • onchange 主要用在 select / radio / checkbox / range 中 选中的状态发生改变
  • oninput 输入类型表单控件value发生变化
  • onfocus 当元素获得焦点时候
    • node.focus() 使元素得到焦点
  • onblur 当元素失去焦点的时候
    • node.blur() 使元素失去焦点
  • onsubmit 当表单提交的时候
    • node.submit 提交这个表单
  • onreset 当表单重置的时候
    • node.reset() 重置这个表单

BOM

dom属于bom(bom包含dom)

bom事件

  • window.open(url,打开方式,窗口特征)

    • 返回值:打开的新窗口的页面属性

    winow.open在高版本下的限制

    1. 只能在事件中操作,否则可能会被阻止掉
    2. 一个事件只能打开一个,第二个可能会被阻止
  • window.close() 关闭当前窗口

window下的对象

  • window.navigator 浏览器信息

    • userAgent 用户代理信息
  • window.location 地址栏信息

    • href 完整的地址(读/写)
    • search 地址栏查询信息(问号到#号之间的所有内容)
    • hash #之后的字符(锚点)
      • onhashchange hash发生改变的时候
  • window.screen 显示器信息

    • scroll 滚动条

      //获取可视区和整个文档的高度
        window.innerWidth,window.innerHeight //可视区
        document.documentElement.clientHeight //可视区
        document.body.clientHeight//整个文档高度
        document.documentElement.scrollHeight//文档高度
      window.onscroll = function(){ //滚动条滚动
          //滚动条滚动距离(滚动距离)
          console.log(document.documentElement.scrollTop,document.documentElement.scrollLeft);
            //chrome下无效
          console.log(document.body.scrollTop,document.body.scrollLeft);
            // 火狐下无效  IE整体不识别
          console.log(window.scrollY,window.scrollX);//IE整体不识别
          console.log(window.pageYOffset,window.pageXOffset);//IE8及以下不识别
          /*
              IE9-IE11不识别 2,3
              IE8一下只识别 1
          */
      }
      **
        兼容不同浏览器
        var scrollY = document.documentElement.scrollTop||document.body.scrollTop;
      ** 
      
      • window.scrollTo(x,y) 设置滚动条距离
  • window.history 浏览器历史记录

    • history.back(); 返回历史记录的上一页
    • history.forward(); 进入历史记录的下一页
    • history.go(nub); 进入具体某一页
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • 什么是 BOM ? 1.浏览器对象模型 Browser Object Model 2.BOM的核心对象是windo...
    WeekOne阅读 407评论 0 2
  • 第一章 1.什么是DOM DOM: Document Object Model(文档对象模型) 是JavaScri...
    fastwe阅读 786评论 0 0
  •   DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口)。   DOM 描绘...
    霜天晓阅读 3,603评论 0 7
  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,749评论 0 8
  • 收集于网络,特此整理。 多看看API,总是没坏处~ 一、节点 1.1 节点属性 Node.nodeName //...
    前端程序猿阿旭阅读 5,314评论 1 1