美文网首页
11|DOM拓展

11|DOM拓展

作者: 井润 | 来源:发表于2020-05-12 15:42 被阅读0次

本节当中讲的内容其实并不多主要有以下几个方面的内容:

  • 选择符API
  • 元素遍历
  • 与类相关的补充
  • 焦点管理
  • HTMLDocument的变化
  • 插入标记
  • children
  • contains

01|选择器API

主要介绍了两个API:

  1. querySelector 传入对应的css选择器 返回与模式匹配的第一个元素没有的话返回null
  2. querySelectorAll 返回所有的匹配元素,所有匹配元素并非一个元素而是一个NodeList的实例

02|元素遍历

其中元素遍历中不包含文本节点和注释节点

// ie9+支持
1.childElementCount // 返回子元素的个数
2.firstElementChild // 指向第一个子元素
3.lastElementChild // 指向最后一个子元素
4.previousElementSibling // 指向前一个同辈元素
5.nextElementSibling // 指向后一个同辈元素

03|与类相关的补充

1.classList.length // 返回包含元素的个数
2.classList.remove() //接收一个类名,从列表中删除给定类名
3.classList.toggle() //如果列表中存在给定的值,删除它,否则添加它
4.classList.add() //将给定的字符串添加到列表中,如果已经存在,就不添加
5.classList.contains() //表明列表中是否存在给定的值,存在则返回true,否则返回false

04|焦点管理

其中用户获取焦点的方式如下所示:

  • 页面渲染
  • 用户输入
  • 在代码中调用focus
1.document.activeElement //始终会引用dom中获得焦点的元素,文档刚刚加载完成时,保存的是document.body元素的引用,文档加载期间的值为null
2.document.hasFocus() //用于确定文档是否获得了焦点,是则返回true

05|HTMLDocument的变化

  • readyState属性
    1.loading //正在加载文档,可以在onload外使用
    2.complete //文档加载完毕。只能在onload内获取
// 例子
if(document.readyState == "complete") {
    // 执行操作
}
  • 兼容模式

其中兼容模式是通过compatMode

  • 字符集属性

我们可以通过document.charset来获取字符集或者设置字符集 当然还能够通过document.defaultCharset获取默认的字符集

  • 自定义数据属性

HTML5规定可以为元素添加非标准的属性,但要添加前缀data-,目的是为元素提供与渲染无关的信息,或者提供语义的信息

dataset属性的值DOMStringMap的一个实例,也就是一个键值对儿的映射!

我们可以看看对应的例子:

<div id="mydiv" data-appid="12345" data-myname="probedream"></div>
<script>
let div = document.getElementById("mydiv");
let appid = div.dataset.appid;
let myname = div.dataset.myname;
if(myname){
    console.log("Hello!")
}
myname = "Gump";
if(myname){
    console.log(myname)
}
//Hello! Gump
</script>

06|插入标记

insertAdjacentHTML()
// 1.作为前一个同辈元素被插入
el.insertAdjacentHTML('beforebegin', '<p>hello world</p>');
// 2.作为第一个子元素被插入
el.insertAdjacentHTML('afterbegin', '<p>hello world</p>');
// 3.作为最后一个子元素被插入
el.insertAdjacentHTML('beforeend', '<p>hello world</p>');
// 4.作为后一个同辈元素被插入
el.insertAdjacentHTML('afterend', '<p>hello world</p>');
  • innerHTML:设置或获取HTML语法表示的元素的后代
  • outerHTML:获取描述元素(包括其后代)的序列化HTML片段
<div id="d">
    <p>Content</p>
    <p>Further Elaborated</p>
</div>
<script>
    const d = document.getElementById("d");
    console.log(d.outerHTML);
//<div id="d"><p>Content</p><p>Further Elaborated</p></div>    
</script>

其中的性能问题:

使用以上三个方法,特别是innerHTML再我们同样修改页面内容特别是DOM操作频繁的时候innerHTML性能上面还是挺不错的!

  • scrollIntoView()方法

滚动页面的一个方法,也是HTML5新增的一个方法作为标准方法而存在!

07|children

// 获取元素集合,只包含元素节点
el.children.length | el.children[i]

08|contains 判断某一个节点是否是另外节点的后代

parentEl.contains(childEl); // 如果childEl是parentEl的后代,则返回true

补充:其中还有一些我们常常用到的比较重要的点

  • innerText 操作元素中包含的所有文本的内容
  • outerText 读取文本值的时候和innerText是差不多的 但是设置文本值的时候会替换整个元素!
  • 滚动

  • scrollIntoViewIfNeeded(alignCenter) 当前元素在视口中不可见的情况下,滚动浏览器窗口或者容器元素,最终让他可见

  • scrollByLines 将元素的内容滚动指定的行高

  • scrollByPages 将元素的内容滚动指定的页面高度

这就是JavaScript高级程序设计中第十一章讲解到的大致内容了!

相关文章

  • 11|DOM拓展

    本节当中讲的内容其实并不多主要有以下几个方面的内容: 选择符API 元素遍历 与类相关的补充 焦点管理 HTMLD...

  • DOM拓展

    Selectors API querySelector()方法接收一个CSS选择符,返回与该模式匹配的第一个元素,...

  • dom总结:DOM拓展

    对 DOM 的两个主要的扩展是 Selectors API(选择符 API)和HTML5,还有Element Tr...

  • dom总结:DOM拓展

    对 DOM 的两个主要的扩展是 Selectors API(选择符 API)和HTML5,还有Element Tr...

  • JS--DOM拓展

    关于DOM的内容实在是太丰富了,前面我们简单的介绍了DOM中关于DOM特性和内容还有DOM节点相关的知识点。其实主...

  • DOM 获取元素

    DOM文档对象模型,是W3C组织推荐的处理可拓展标记语言(HTML或者XML)的标准编程接口。 一、DOM树 文档...

  • 2018-12-28红宝书第10章以后总结

    第十章DOM 第11、12章 DOM2和DOM3 主要是对DOM的一些能力扩展 DOM2能使用事件与DOM文档交互...

  • JavaScript-DOM

    操作DOM 更新DOM 9.表单 10.操作文件 11.回调

  • day03

    1.我学了什么 1.事件(event) 2.条件判断 3.循环 4.拓展DOM

  • day03

    A我今天学了什么 1.拓展DOM 1.2子节点childNodes和children的区别 1.3兄弟节点 1.4...

网友评论

      本文标题:11|DOM拓展

      本文链接:https://www.haomeiwen.com/subject/qwjeactx.html