对DOM的两个主要的扩展
Selectors API
HTML5 
Element Traversal 元素遍历规范
querySelector
var body = document.querySelector("body");
var myDiv = document.querySelector("#myDiv"); 取得id为myDiv的元素
var selected = document.querySelector(".selected") 取得类名为 selected 的第一个元素
var img = document.body.querySelector("img.button") 取得类名为button的第一个img元素
querySelectorAll 
和上面方法一样,只是能获得所有的元素,返回值是一个NodeList的实例
取得p元素中的所有strong元素
document.querySelectorAll("p strong") ;
matchesSelector
document.documentElement.matchesSelector("body.page1");
Element Traversal
1 childElementCount
2 firstElementChild
3 lastElementChild
4 previousElementSibling
5 nextElementSibling 
HTML5 
1 getElementByClassName() 可能通过document和所有HTML元素调用这个方法,因为返回的是NodeList,所以和getElementByTagName()和NodeList的其它DOM方法 都具有同样的性能问题
2 classList
   因为className是一个字符串,所以即使只修改字符串一部分,也必须每次都设置整个字符串的值
所有有了以下方法
div.classList.add()
div.classList.remove()
div.classList.toggle()
焦点管理
 
找DOM中获得焦点的元素
document.activeElement
元素获得焦点的方法有3种
页面加载
用户输入 
在代码中调用focus()方法
判断文档中是否有焦点
document.hasFocus()
HTMLDocument的变化 
1 readyState 有两个值 loading 和 complete  要借助onload方法
2 兼容模式 document.compatMode == "CSS1Compat" 而在混杂模式下 docuement.compatMode == "BackCompat";
3 head 属性 
var head = document.head || document.getElementByTagName("head")[0] ;
字符集属性
document.charset = "UTF-8" ;
自定义数据属性
要以 data-开头 比如
<div id="myDiv" data-appId="123" data-myname="jeff" ></div>
取得自定义属性
var appId = div.dataset.appId ;
设置值
div.dataset.appId = "4" ;
innerHTML
返回调用它的元素的子节点标签
outerHTML
outerHTML 返回调用它的元素及所有子节点的HTML标签
inserAdjacentHTML方法
element.insertAdjacentHTML("beforebegin", <p>);
beforebegin
afterbegin
beforeend
afterend
内存和性能问题
innerHTML 比多次操作DOM强
但innterHTML也不要操作太多次
scrollIntoView 
可在所有HTML元素上调用,通过滚动浏览器窗口或某个容器元素 调用元素就可以出现在视口中
如果传 true, 或者不传参,那么窗口滚动之后 会让调用元素的顶部与视口顶部尽可能平齐
如果传 false 调用元素会尽可能全部出现在视口中,不过项部不一定平齐
 
别的方法: 为某个元素设置焦点,也会导致浏览器滚动 并显示出获得焦点的元素
children属性
 
contains方法
 
滚动
scrollIntoViewIfNeeded
scrollByLines
scrollByPages
 
 

读书笔记 - js高级程序设计 - 第十一章 DOM扩展的更多相关文章

  1. 读书笔记 - js高级程序设计 - 第五章 引用类型

      引用类型 和 类 不是一个概念 用typeof来检测属性是否存在 typeof args.name == "string"  需要实验 访问属性的方法 .号和[] 一般情况下要 ...

  2. 读书笔记 - js高级程序设计 - 第七章 函数表达式

      闭包 有权访问另一个函数作用域中的变量的函数 匿名函数 函数没有名字 少用闭包 由于闭包会携带包含它的函数的作用域,因此会比其它函数占用更多的内存.过度使用闭包可能会导致内存占用过多,我们建议读者 ...

  3. 读书笔记 - js高级程序设计 - 第六章 面向对象的程序设计

      EcmaScript有两种属性 数据属性 和 访问器属性 数据属性有4个特性 Configurable Enumerable Writable Value   前三个值的默认值都为false   ...

  4. 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题

      5种基本数据类型 可以直接对值操作 判断引用类型 var result = instanceof Array 执行环境 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这 ...

  5. 读书笔记 - js高级程序设计 - 第三章 基本概念

    启用严格模式 "use strict" 这是一个 pragma 编译指示 让编码意图更清晰  是一个重要原则 5种简单数据类型 Undefined Null Boolean Num ...

  6. 读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图

    读书笔记 - js高级程序设计 - 第十三章 事件   canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好   有时候即使浏览器支持,操作系统如果缺缺 ...

  7. 读书笔记 - js高级程序设计 - 第十二章 DOM2和DOM3

      Node类型的变化   访问元素的样式 myDiv.style.backgroundColor = "red" myDiv.style.width = "100px& ...

  8. 读书笔记 - js高级程序设计 - 第十章 DOM

      文档元素 是文档的最外层元素,在Html页面中,文档元素始终都是<html>元素 在xml中,任何元素都可以是文档元素 Node类型 Node.ELEMENT_NODE 元素 Node ...

  9. 读书笔记 - js高级程序设计 - 第八章 BOM

      BOM的核心对象是window 它表示浏览器的一个实例,在浏览器中,window对象有双重角色,它既是通过js访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象,这意味着在网 ...

随机推荐

  1. require - 引入文件

    导入 /** * Creates the node for the load command. Only used in browser envs. */ req.createNode = funct ...

  2. 【STM32H7教程】第53章 STM32H7的LTDC应用之汉字小字库和全字库制作

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第53章       STM32H7的LTDC应用之汉字小字库 ...

  3. js网页拉起支付宝支付

    js网页唤起支付宝进行支付 在做uni-app项目中,打包成 ios App的时候,为了绕过苹果支付的审核,所以用的 webview 加载支付宝的网页支付,进行付款 具体实现流程: 前端通过 url ...

  4. C语言表结构(1)

    1.顺序表初始化实战: #include<stdio.h> #include<stdlib.h> #define OK 1 #define OVERFLOW 0 #define ...

  5. JavaNIO第一话-Buffer

    Buffer是入门Java NIO的基础,本文希望通过一些形象的比喻来解释一下缓冲区的概念,帮助读者快速理解和记忆. 本文灵感来自于Bilibili博主v若水若水分享的尚硅谷Java视频_NIO视频教 ...

  6. 超大数据量操作 java程序优化[转载]

        一个表中有1000万以上的数据,要对其进行10万次以上的增删查改的操作,请问如何优化java程序对数据库的操作? 通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化. ...

  7. 留学生想要搞定Reading List?只需这三步即可

    听到有同学在抱怨“一本书都读不完,还怎么搞定reading list啊?”别急,小编这就来给你支招啦!你的文献阅读方法错了,读起来不仅效率低,而且无法做到熟练运用.因此,你需要以下这3步,就能搞定文献 ...

  8. JDBC Connection Configuration配置正确,提示Error preloading the connection pool

    JDBC Connection Configuration配置正确,提示Error preloading the connection pool JDBC 请求报错,提示: 因为之前执行是正确的,这次 ...

  9. 第一单元总结:基于基础语言、继承和接口的简单OOP

    前情提要 到目前为止,OO课程已经完成了前三次的作业,分别为: 第一次作业:简单多项式的构造和求导.[正则表达式][数据结构][排序] 第二次作业:含三角函数因子的复杂多项式的构造.求导和化简.[递归 ...

  10. window 命令行telnet 不能用问题

    如图 解决办法 打开window控制面板,启用或关闭window功能,勾选telnet选项.