这是我参与更文挑战的第1天,活动详情请查看:更文挑战css
利用css匹配规则作的原生js api接口, 提升匹配效率html
一个css选择符html5
返回第一个匹配CSS选择符的DOM元素web
几乎与querySelector()相同 返回一个NodeList对象, 包含全部匹配CSS选择符的DOM节点, 若无也是返回NodeList对象,不过其为空api
querySelector与querySelectorAll返回的是静态的NodeList浏览器
css选择符markdown
调用该方法的元素若是与css选择符匹配则返回true, 不然返回falseapp
返回子元素(不包括文本节点和注释)的个数svg
指向第一个子元素; firstChild的元素版post
指向最后一个子元素; lastChild的元素版
指向前一个同辈元素; previousSibling的元素版
指向后一个同辈元素; nextSibling的元素版。
一个包含一个或多个类名的字符串
指定的类的全部元素的NodeList
返回调用元素和调用元素的全部子节点的引用
第一个参数必须是下列值之一
第二个参数是一个HTML字符串, 若是浏览器没法解析该字符串,就会抛出错误
在删除带有事件处理程序或引用了其余JavaScript对象子树时, 就有可能致使内存占用问题。
假设某个元素有一个事件处理程序(或者引用了一个JavaScript对象做为属性), 在使用前述某个属性将该元素从文档树中删除后, 元素与事件处理程序(或JavaScript对象)之间的绑定关系在内存中并无一并删除。 若是这种状况频繁出现,页面占用的内存数量就会明显增长。
所以,在使用innerHTML、outerHTML属性和insertAdjacentHTML()方法时, 最好先手工删除要被替换的元素的全部事件处理程序和JavaScript对象属性 (第13章将进一步讨论事件处理程序)
不过,使用这几个属性——特别是使用innerHTML,仍然仍是能够为咱们提供不少便利的。通常来讲,在插入大量新HTML标记时,使用innerHTML属性与经过屡次DOM操做先建立节点再指定它们之间的关系相比,效率要高得多。这是由于在设置innerHTML或outerHTML时,就会建立一个HTML解析器。这个解析器是在浏览器级别的代码(一般是C++编写的)基础上运行的,所以比执行JavaScript快得多。不可避免地,建立和销毁HTML解析器也会带来性能损失,因此最好可以将设置innerHTML或outerHTML的次数控制在合理的范围内
虽然inner HTML或outerHTML很方便, 但建立和销毁时会带来更高的性能损失, 应该避免频繁使用