首页 > 其他 > 详细

BOM&DOM总结

时间:2020-03-11 17:47:44      阅读:70      评论:0      收藏:0      [点我收藏+]

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

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

BOM&DOM总结

原文:https://www.cnblogs.com/codexlx/p/12463018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!