-
setAttribute
是第一级 DOM 的组成部分,不使用setAttribute
而通过 dom 对象属性名同样能修改属性值。但是setAttribute
的好处是能修改元素的所有属性。同时可移植性好。老的属性名赋值的方法只适用于 web 文档,DOM 方法适用于任何标记语言。 - DOM 是一种适用于多种环境和多种程序语言的通用型 API,严格遵守DOM能避免与兼容性有关的任何问题。
- 标签中的
onclick="..."
可以把任何方法放入引号间。相当于onclick=new Function('statement')
。这时需要确保新生成的函数实例最后显式的返回false
,才不会触发默认事件。如果生成的函数执行返回true
,onclick
事件处理函数就认为被点击了,反之返回false
,则认为没有被点击,不会触发默认事件。 - 标签中的事件中可以适用
event
,this
。this
指对象节点本身。 -
childNodes
获取所有子节点(元素与文本节点),在html中换行符也会产生一个文本节点。 -
nodeType
每个节点都有nodeType
值
- 元素节点:1
- 属性节点:2
- 文本节点:3
-
nodeValue
节点的值
- <p>元素的
nodeValue
不会显示出来,而是显示其子节点内容 - <input>元素的
nodeValue
与其值value
不是同一个概念
- 相对节点:
firstChild
,lastChild
- 伪协议
javascript:
使得<a>
可以通过href
属性调用JS函数:<a href="javascript:void"/>
,但在老的浏览器中可能会失败,这种做法并不好。 -
#
是一个仅供文档内部跳转的连接符号。未指向或某些浏览器会指向文档的头部<a href="#" />
。 - 方法检测
- 对象检测:检测要适用的方法是否存在
- 浏览器嗅探技术:有时候浏览器会撒谎,因此不建议使用。
- 性能优化
- 减少访问DOM和减少标记。不管什么时候,只要查询DOM元素,浏览器就会搜索整个DOM树,从中查找可能匹配的元素。过多不必要的元素只会增加DOM树的规模与查找特定元素的时间。
- 合并和放置脚本
- 压缩代码
平稳退化(优雅降级) | 考虑用户无法使用JS或禁用JS的情况,仍确保用户能顺利浏览网站。一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。 | <a href="..." onclick="..." /> 当onclick失效时,确保href的跳转,有效时则禁止触发默认事件 |
渐进增强 | 针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。 | |
以用户为核心的设计 |
网友评论