• BOM&DOM总结


    总结:增删改查+事件绑定 

    1. 查找元素: 4:

    (1). 不需要查找,就可以直接获得的元素: 4:

    a. <html>    document.documentElement

                    文档/网页        元素

    b. <head>    document.head

                             

    c. <body>     document.body

      身体

    d. <form>    document.forms[iid]

     表单

    除此之外,其余元素都需要先找到!才能使用!

    (2). 按元素身上的HTML特征查找: 4

    a. id查找一个元素:

    var 一个元素对象=document.getElementById("id")

     获得一个元素按id

    如果返回一个元素的函数,找不到元素,返回null

        所以,判断是否id找到了元素,应该用元素!=null” 作为判断条件

    b. 按标签名查找多个元素:

    var 类数组对象=任意父元素.getElementsByTagName("标签名")

                                     获得多个元素按标签名

    c. class名查找多个元素:

    var 类数组对象=任意父元素.getElementsByClassName("class")

     获得多个元素按class

    d. name名查找多个表单元素:

    var 类数组对象=document.getElementsByName("name")

       获得多个元素按name

    如果返回类数组对象的函数,找不到元素,返回空类数组对象

    所以,判断是否按标签名、class名、name找到了元素,应该用集合.length>0” 作为判断条件

    (3). 按节点间关系查找: 2大类关系,6个属性

    a. 父子关系:

    1). 元素.parentNode  获得元素的父元素

    父级  节点

    2). 元素.children   获得元素下的所有直接子元素

        孩子们

    children返回的也是类数组对象

    3). 元素.firstElementChild  获得元素下的第一个直接子元素

       第一个元素 孩子

    4). 元素.lastElementChild  获得元素下的最后一个直接子元素

      最后一个元素孩子

    b. 兄弟关系:

    1). 元素.previousElementSibling 获得前一个兄弟元素

    前一个  元素  兄弟

    2). 元素.nextElementSibling 获得后一个兄弟元素

       后一个 元素 兄弟

    (4). 按选择器查找: 2

    a. 只查找一个符合条件的元素

    var 一个元素对象=任意父元素.querySelector("选择器")

       查找 ()选择器 (一个元素)

    如果找不到返回null,所以判断是否找到,可用"元素!=null"当条件

    b. 查找多个符合条件的元素

    var 类数组对象=任意父元素.querySelectorAll("选择器")

     查找 ()选择器 所有(符合条件的元素)

    如果找不到返回空类数组对象,所以判断是否找到,可用"类数组对象.length>0"当条件

    总结: 如果只靠一个条件就可找到想要的元素时,首选HTML特征查找。如果查找条件复杂,就用按选择器查找。如果已经获得一个元素找周围附近元素时,首选按节点间关系查找。

    2. 修改: 一个元素身上有三样东西可以修改

    (1). 内容: 三种

    a. 如果获取或修改元素的原始HTML内容,几乎都首选innerHTML

    b. 只有在希望获得纯文本内容,去掉内嵌的标签和特殊符号时,才被迫选择textContent

    c. 如果获取或修改表单元素的值,都用.value

    (2). 属性: 3

    a. 字符串类型的HTML标准属性: 2

    1). 核心DOM4个函数:

    元素.getAttribute("属性名")

    获得属性值

    元素.setAttribute("属性名","属性值")

    修改属性值

    元素.removeAttribute("属性名")

       移除属性

    元素.hasAttribute("属性名")

    (判断是否)(这个)属性

    2). HTML DOM简写: ——首选

    获得属性值: 元素.属性名

    修改属性值: 元素.属性名="新值"

    移除属性: 元素.属性名=""

    (判断是否)(这个)属性: 元素.属性名!==""

    b. bool类型的HTML标准属性:

    1). 不能用核心DOM 4个函数来访问

    2). 只能用"元素.属性名"方式来访问,且值都为bool类型的true/false

        c. 获取或修改自定义扩展属性的值:

    1). 定义自定义扩展属性: <元素  data-自定义属性名="属性值">

    2). 获取或修改自定义扩展属性的值:

    i. 获取: 元素.getAttribute("data-自定义属性名")

                       元素.dataset.自定义属性名

    ii. 修改: 元素.setAttribute("data-自定义属性名","属性值")

       元素.dataset.自定义属性=属性值

    d. 查找带有自定义属性的元素: 属性选择器:

    document.querySelectorquerySelectorAll("[data-自定义属性名=属性值]")

    (3). 样式:

    a. 修改元素的内联样式: 元素.style.css属性="属性值"

    b. 获取元素的完整样式: 2

    1). var style=getComputedStyle(元素对象)

    2). style.css属性

    强调: 计算后的样式虽然完整包含所有css属性,但是都是只读的,禁止通过计算后的style对象,修改任何css属性

        c. 批量修改元素的样式:

    1). 元素.style.cssText="css属性:属性值; css属性:属性值; ..."

    2). 元素.className="class"

    3. 添加删除:

    (1). 添加元素: 3

    a. 创建新的空元素: var a=document.createElement("a")

    <a></a>

    b. 为新元素添加关键属性:

    a.href="http://tmooc.cn"

    a.innerHTML="go to tmooc"

    <a href="http://tmooc.cn"> go to tmooc </a>

    c. 将新元素添加到DOM上的指定父元素下: 3:

    1). 末尾追加: 父元素.appendChild(新元素)

        追加一个孩子

    2). 插入到现有子元素之前: 父元素.insertBefore(新元素, 现有子元素)

    插入到xxx
    3). 替换现有子元素: 父元素.replaceChild(新元素, 现有子元素)

     替换一个孩子

    (2). 删除: 父元素.removeChild(要删除的元素对象)

    4. 事件绑定:

    (1). 在元素上  发生事件时,自动执行=后的函数

      元素  .on事件名    =   function(){

    this->当前正在触发事件的元素对象

    }

    (2). 为一个元素的一个事件绑定多个事件处理函数

    元素.addEventListener("事件名", 事件处理函数对象)

    元素.removeEventListener("事件名", 原事件处理函数对象)

    HTML DOM常用简写: 

    1. var img=new Image();

    2. select:

    (1). select.options

    (2). var option=new Option(内容,);

    3. table:

    (1). table管着行分组

    a. 创建行分组: table.createTHead()    table.createTFoot()   table.createTBody()

    b. 删除行分组: table.deleteTHead()    table.deleteTFoot()

    c. 获取行分组: table.tHead   table.tFoot   table.tBodies[i]

    (2). 行分组管着行:

    a. 创建行: 行分组.insertRow()  insertRow(0)  insertRow(i)

    b. 删除行: table.deleteRow(tr.rowIndex)

    c. 获取行: 行分组.rows[i]

    (3). 行管着格:

    a. 创建格: tr.insertCell()

    b. 删除格: tr.deleteCell()

    c. 获取格: tr.cells[i]

    4. form:

    form.elements[i  id   name]

    form.name

    form.length

    表单元素.focus()

    BOM

    1. window:

    (1). 获得窗口大小:

    a. 完整窗口大小: window.outerHeight   window.outerWidth

    b. 仅文档显示区范围大小: window.innerHeight   window.innerWidth

    (2). 控制窗口中网页的滚动:

    a. window.scrollTo(0, 滚动到的位置)

    b. window.scrollBy(0, 滚动过的位置)

    (3). 打开和关闭窗口:window.open()  window.close()

    2. 打开新链接:4种方式:

    (1). 当前窗口打开新链接,可后退

    a. html: <a href="http://tmooc.cn" target="_self">

    b. js: window.open("http://tmooc.cn", "_self")

    location.href=" http://tmooc.cn"

    (2). 在当前窗口打开新链接禁止后退

    a. js: location.replace("url")

    (3). 新窗口打开新链接可同时打开多个

    a. html: <a href="http://tmooc.cn" target="_blank">

    b. js: window.open("http://tmooc.cn", "_blank")

    (4). 新窗口打开新链接同一个链接只能打开一个窗口

    a. html: <a href="http://tmooc.cn" target="自定义窗口名">

    b. js: window.open("http://tmooc.cn", "自定义窗口名")

    3. history: history.go(1) 前进一步

    history.go(-1)  后退一步

    history.go(-2)  后退两步

    history.go(0)  刷新页面

    4. location:

    (1). 分段获得当前浏览器窗口正在打开的url的各个部分

    a. location.href  完整的url

    b. locaiton.protocol  协议

    c. location.host  主机名+端口号

    d. location.hostname  主机名

    e. location.port   端口号

    f. location.pathname  相对路径名

    g. location.search   ?查询字符串

    h. location.hash     #锚点地址

    (2). 执行一些操作

    a. 也能实现在当前窗口打开,可后退:

    location.href="url"

    b. 在当前窗口打开,禁止后退:

    location.replace("url")

    c. 刷新: location.reload();

    5. navigator:

    (1). 判断浏览器是否安装某个插件

    navigator.plugins["完整插件名"]!==undefined

    (2). 获得浏览器的名称和版本号

    navigator.userAgent

  • 相关阅读:
    【linux】系统初始化的shell脚本
    【mysql】数据库Schema的优化
    【mysql】使用xtrabackup在线增量备份及恢复数据库
    mysql中日志的配置与分析
    Javascript 计算字符串所占字节数
    Javascript调试利器console的使用
    Javascript中类型的判断
    Javascript中的数据类型知多少
    Javascript中bind()方法的使用与实现
    【mysql】Innodb三大特性之insert buffer
  • 原文地址:https://www.cnblogs.com/codexlx/p/12463018.html
Copyright © 2020-2023  润新知