前端之BOM和DOM

眉间皱痕 提交于 2020-03-06 14:48:06

一. BOM和DOM

  JavaScript分为ECMAScript, BOM, DOM.

  BOM( Browser Object Model )是指浏览器对象模型, 它使JavaScript有能力与浏览器进行交互.

  DOM( Document Object Model )是指文档对象模型, 通过它,可以访问HTML文档的所有元素.

二. window对象

  所有浏览器都支持window对象. 它表示浏览器窗口.

  所有文档包含框架( frame或iframe标签 ), 浏览器会为HTML文档创建一个window对象, 并为每个框架创建一个额外的window对象.

  没有应用于window对象的公开标准,不过所有浏览器都支持该对象.

  所有JavaScript全局对象,函数以及变量均自动成为window对象的成员.

  全局变量是window对象的属性,全局函数是window对象的方法.

  一些常用的window方法 : 

    · window.innerHeight - 浏览器窗口的内部高度

    · window.innerWidth - 浏览器窗口的内部宽度

    · window.open() - 打开窗口

    · window.close() - 关闭当前窗口

  window 子对象 :

    1. navigator对象  浏览器对象,通过这个对象可以判定用户所使用的浏览器,包含浏览器相关信息

      ①. navigator.appName  //返回web浏览器全称

      ②. navigator.appVersion  //返回web浏览器厂商和版本的详细字符串

      ③. navigator.userAgent  //客户端绝大部分信息

      ④. navigator.platform  //浏览器运行所在的操作系统

    2. screen对象  屏幕对象

      ①. screen.availWidth  //可用的屏幕宽度

      ②. screen.availHeight  //可用的屏幕高度

    3. history对象

      浏览历史对象,包含了用户对当前页面的浏览历史,但我们无法查看具体的地址,可以简单的用来前进或后退一个页面.

      ①. distory.forward()  前进一页

      ②. distory.back()  后退一页

    4. location对象

      window.location对象用于获得当前页面的地址(URL),并把浏览器重新定向至新的页面.

      ①. location.href  获取URL

      ②. location.href = "URL"  跳转至指定URL

      ③. location.reload()  重新加载页面

三. BOM

  1. 弹出框

    可以在JavaScript中创建三种消息框 : 警告框, 确认框, 提示框

    ①. 警告框 :

      警告框经常用于确保用户可以得到某些信息.

      当警告框出现后, 用户需要点击确认按钮才能继续进行操作.

      语法 : alert ( "你过来啊" )

    ②. 确认框

      确认框用于使用户可以验证或者接受某些信息.

      当确认框出现后,用户需要点击确定或者取消按钮才能进行操作.

      如果用户点击确认,那么返回值为true. 如果用户点击取消,那么返回值为false.

      语法 : confirm ( "你过来啊" )

    ③. 提示框

      提示框经常用于提示用户在进入界面前输入某个值.

      当提示框出现后, 用户需要输入某个值,然后点击确认或者取消按钮才能继续操作.

      如果用户点击确认, 那么返回值为输入的值. 如果用户点击取消,那么返回值为null.

      语法 : prompt ( "你过来啊" )

  2. 计时相关

    通过使用JavaScript,我们可以在一定时间之后执行代码,而不是在函数被调用后立即执行.

    ①. setTimeout ()

      语法 : var t = setTimeout ( "JS语句",毫秒 );

      setTimeout()方法会返回某个值.在上面的语句中,值被储存在名为t的变量中. 如果取消这个setTimeout()操作, 可以使用这个变量名来指定.

      setTimeout()的第一次参数是含有JavaScript语句的字符串,或者对函数的调用.第二个参数是指从开始起多少毫秒之后执行第一个参数.

    ②. clearTimeout()  取消setTimeout的设置

      语法 : clearTimeout( 存储setTimeout返回值的变量 )

    ③. setInteral()

      setInterval() 方法可按照指定的周期(以毫秒计算)来调用函数或计算表达式.

      setInterval() 方法会不停地调用函数,直到clearInteral()被调用或窗口被关闭.

    ④. clearInterval() 方法可取消由 setInterval() 设置的timeout

      clearInterval() 方法的参数必须是由 setInterval() 返回的ID值.

四. DOM

  DOM是一套对文档的内容进行抽象和概念化的方法.

  当页面被加载时.浏览器会创建页面的文档对象模型( Document Object Model )  

  1. HTML  DOM 树

  DOM标准规定HTML文档中的每个成分都是一个节点(node) :

    · 文档节点( document对象 ) : 代表整个文档

    · 元素节点( element对象 ) : 代表一个元素(标签)

    · 文本节点( text对象 ) : 代表元素(标签)中的文本

    · 属性节点( attribute对象 ) : 代表一个属性,元素(标签)才有属性

    · 注释是注释节点( conment对象 )

  JavaScript 可以通过DOM创建动态的HTML :

    · JavaScript 能够改变页面中的所有HTML元素

    · JavaScript 能够改变页面中的所有HTML属性

    · JavaScript能够改变页面中的所所有CSS样式

    · JavaScript能够对页面中的所有事情做出反应

  2. 查找标签

    ①. 直接查找  //可以使用变量接收,接收的是数组类型

      document.getElementById           根据ID获取一个标签

      document.getElementsByClassName    根据class属性获取标签,如果有多个标签有同一个类名,取出所有的标签的类型是数组形式,可以根据索引去取具体的某一个标签.

      document.getElementsByTagName        根据标签名获取标签合集

    注意 : 涉及到DOM操作的JS代码应该放在文档的那个位置

    ②. 间接查找

      parentElement         父节点标签元素

      children            所有子标签

      firstElementChild        第一个子标签元素

      lastElementChild      最后一个子标签元素

      nextElementSibling     下一个兄弟标签元素

      previousElementSibling   上一个兄弟标签元素

  3. 节点操作

    1. 创建节点

      语法 : var x = document.createElement (标签名)

    2. 添加节点

      语法 : 追加一个子节点 (作为某一个父标签内的最后一个子节点)

        somenode(某一个父标签).appendChild(newnode(追加的标签));

      把增加的节点放到某个节点的前边.

        somenode(某一个父标签).insertBefore(newnode(要添加的标签),以某个节点为参照物);

    3. 删除节点

      语法 : 获得要删除的元素, 通过父元素调用删除.

        取出的父元素.removeChild(要删除的节点)

    4. 替换节点

      语法 : somenode(要替换节点的父元素).replaceChild(newnode,某个节点);

    5. 属性节点

      ①. 获取文本节点的值 :

        var divele = document.getElementById("d1")  //将取出的标签赋给变量divele

        divele.innerText

        divele.innerHTML

      ②. 设置文本节点的值

        divele.innerText = " 标签内容 "  //不能识别的标签按照文本字符串添加

        divele.innerHTML = " 标签内容 "  //可以正常识别标签

      ③. 属性操作  //只有详细的标签对象才可以使用这种方法

        取出的标签.getAttribute("属性名")  //获取某一个标签的某一个属性的值

        取出的标签.setAttribute("属性名", "新的属性值")  //将获取到的属性的值修改为新值.

        取出的标签.removeAttribute("属性名")  //删除某一个属性

        JS自带的属性可以直接通过 .属性名 的方法来获取或设置

          img.src  //获取图片

          img.src = "..."  //设置图片

    6. 获取用户输入或选择的值操作  //适用于input,select,textarea标签

      语法 : 取出的标签.value

      ①. document.getElementById("id").value

      如果操作的标签是select,那么取出的内容是option内的value对应的值,如果option内没有value属性,则取出对应option标签内容(显示在用户面前的内容)

    7. class操作

      语法 : 取出的标签.className  //获取所有样式类名(字符串类型)

      语法 : 取出的标签.classList  //获取取出标签的样式类名(数组形式)

      ①. 删除某一个标签的某一个样式类 :

        取出的标签.classList.remove("要删除的类名")

      ②. 给某一个标签添加某一类名 :

        取出的标签.classList.add("要添加的类名")

      ③. 判断某一个标签是否含有某一个样式类 :

        取出的标签.classList.contains("要判断的类名")

      ④. 切换(删除和添加切换)

        取出的标签.classList.toggle("某一个类名")

    8. 指定css操作

      语法 : 取出的标签.style.backgroundColor = "red"  //将某一个标签的背景颜色编程红色.

      JS操作css属性的规律 :

        ①. 对于没有中横线的css属性一般使用 style.属性名 就可以.  如 :

          取出的标签.style.margin

          取出的标签.style.width

          取出的标签.style.left

          取出的标签.style.position

        ②. 对含有横线的css属性,将中横线去掉并且将中横线后面的第一个字母换成大写

          取出的标签.style.marginTop

          取出的标签.style.barderLeftWidth

          取出的标签.style.zIndex

          取出的标签.style.fontFamily

  3. 事件

    1. 绑定事件

      ①. <input id="b1" type="button" onclick="change()" value="点我">  //给button绑定一个函数

      ②. <input id="b2" type="button" value="点我2">

         document.getElementById("b2").onclick =function()                               {document.getElementById("cc").classList.toggle("c1")}

    2. 常用事件

      onclick  //当用户点击某一个对象是调用绑定的事件

      ondblclick  //当用户双击某一个对象时调用绑定的事件

      onfocus  // 用户点击搜索框获得光标

      onblur  //用户失去光标

<input id="t1" type="text" value="请输入">
//    获取焦点
    document.getElementById("t1").onfocus = function (ev) {
        //获取焦点后输入框变为空
        this.value=""
    }
//    失去焦点
    document.getElementById("t1").onblur = function (ev) {
        this.value = "请输入"
    }

      onchange  //通常用于表单元素,内容改变是获取内容

      onkeydown  //某个键盘按键被按下触发事件(例如 : 回车)

      onkeypress  //某个键盘按键被按下并松开

      onkeyup  //某个键盘按键被松开

      onload  //一张页面或一幅图像加载完成

      onmousedown  //鼠标按钮被按下

      onmousemove  //鼠标被移动

      onmouseout  //鼠标从某元素上移开

      onmouseover  鼠标移动到某元素之上

      onselect  //在文本框的文本被选中时触发事件

      onsubmit  //确认按钮被点击,使用的对象是form.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!