JS红皮书解读之DOM扩展

选择符API
(1)querySelector() //返回单例
(2)querySelectorAll() //返回nodelist,即使只有一个也是
(3)matchesSelector() //检测该选择符是否存在


元素遍历(不包括空白文本节点)
childElementCount
firstElementChild
lastElementChild
previousElementSibling
nextElementSibling


HTML5中的DOM操作
(1)classList——对类名进行操作
如删除类名 user

div.classList.remove("user")

还有其他操作:add()、contains()判断是否有特定的值、remove()、toggle()有则移除,没有则添加。

(2)焦点管理(实用且重要)
1)、document.activeElement,该属性会始终引用当前获取焦点的元素。

    $('body').on('keydown',(e)=>{
    console.log(document.activeElement.nodeName) //BODY、INPUT都是大写的
            })

2)、document.hasFocus(),确定文档是否获取焦点,即可以知道用户是不是正在与页面交互

(3)readyState
document.readyState——判断文档是否加载成功
document.readState==="complete" 已加载完毕
document.readState==="loading" 正在加载

(4)head属性
document.body引用body元素
document.head引用head元素
兼容性写法:

let head=document.head||document.getElementsByTagName("head")[0]

(5)字符集属性——document.charset
修改字符集属性可通过三种方法:
1)、


2)、响应头部(后台)

request.setCharacterEncoding("utf-8");

3)、直接设置charset属性

document.charset="UTF-8"

(6)自定义数据属性—— data-xxx
通过 DOM元素.dataset.自定义属性名去获取

let aa=document.querySelector('#div') let bb=aa.dataset.aa console.log(bb) //hahaah

(7)插入标记
1)、innerHTML
以下方法效率低下

    for(let i=0,len=values.length;i" //要避免该频繁操作
    }

以下方法效率高效,因为它对innerHTML只做了一次赋值操作

    let txt=""
    for(let i=0,len=values.length;i"+values[i]+"" 
    }
    ul.innerHTML=txt

2)、outerHTML
3)、insertAdjacentHTML()

(8)scrollIntoView()——将目标滑动到可视区域上
详细的看这里

JS红皮书解读之DOM扩展_第1张图片
image.png

JS红皮书解读之DOM扩展_第2张图片
image.png

(9)children属性

(10)contains()方法——判断某个节点是否是另一节点的后代

xxx(祖先节点).contains(xxx(要检测得后代节点))  //true或false
let aa=document.querySelector('#div') let bb=document.querySelector('#input') console.log(aa.contains(bb)) //true

(11)innerText
设置innerText永远只会生成当前节点的一个子文本节点,而为了确保只生成一个子文本节点,就必须要对文本进行HTML编码,利用这个,就可以过滤HTML标签。

let aa=document.querySelector('#div')
    aa.innerText="hello11" //
hello11

(12)outerText
跟innerText最大区别是它会包括自身节点。

(完,有的兼容性代码未整理)

你可能感兴趣的:(JS红皮书解读之DOM扩展)