1、严格的全等操作符 === 严格不相等!== 不仅比较值,还会比较变量类型
2、函数名 驼峰命名法 , 变量 小写和下划线。 这样容易区分出来哪些是变量 哪些是函数
3、宿主对象:向浏览器提供的预定义对象。包括from,element,image等。还有一种宿主对象也能获得网页上任何一个元素的信息,就是document对象。
5、getElementById返回一个对象,对应文档里的一个特定的节点
getElementsByName和getElementByclassName返回一个对象数组,分别对应着文档里的一组特定元素节点。
6、通过setAttribute对文档做出修改后,再通过浏览器的查看源代码,发现仍然是改变前的属性值,所以,setAttribute做出的修改不会反映在文档本身的源代码里,这种“表里不一”的现象就是因为DOM的工作模式,先加载文档的静态内容,再动态刷新,动态刷新不影响文档的静态内容。这就是DOM的真正威力,对页面内容进行刷新却不需要在浏览器刷新页面。
7、五个基础的DOM方法:getElementById,getElementsByTagName, getElementByClassName,getAttribute,setAttribute
8、DOM的几个属性 chileNodes nodeType nodeValue firstChild lastChild
10、
分离javascript
本来是这样的:
<a href="http://www.example.com/" οnclick="popUp(this.href); return false; ">Example</a>
可以通过分离javascript,使得原代码只需要这样:
<a href="http://www.example.com/" class="popup">example</a>
javascript代码如下:
window.οnlοad=prepareLinks;
function prepareLinks(){
if(!document.getElementsByTagName) return false;//渐进增强,向后兼容,确保在古老的浏览器里也能正常浏览
var links= document.getElementsByTagName("a");
for(var i=0;i<links.length;i++){
if(links[i].getAttribute("class")=="popup"){
links[i].onclick = function(){
popUp(this.getAttribute("href"));
return false;
}
}
}
}
function popUp(winURL){
window.open(winURL,"popup","width=320,height=480");
}
12、性能考虑
尽量少访问DOM(只要查询DOM中的某些元素,浏览器就会搜索整个DOM树)
尽量减少标记(过多不必要的元素会增加DOM树的规模,进而增加遍历DOM树以查找特定元素的时间)
众多js文件合并到一个脚本文件中(减少加载页面时发送的请求数量)
script标签放到文档末尾,</body>之前(可以让页面变得更快)
这个建议正确吗?(这一点还不是太理解==|||||)
压缩脚本(多数情况下,应该有两个脚本,一个是工作副本,一个是精简副本,为了区分,通常在精简副本前加上min字样。这个老版本书里推荐的几个代码压缩工具,不知道现在还流行不,先mark在这了:Douglas crockfrod的JSMin,雅虎的YUI Compressor,谷歌的closure compiler )
13、
页面加载完毕时执行多个函数,使用经典解决的函数:addLoadEvent
通用型函数,可以用于许多场合
function addLoadEvent(func){
var oldonload = window.onload;
if(typeof window.onload != 'function'){
window.οnlοad=func;
}else{
window.οnlοad=function(){
oldonload();
func();
}
}
}
这个函数把那些页面加载完毕时执行的函数创建为一个队列。然后,如果想把某个函数添加到这个队列里,就写:
addLoadEvent(firstFunction);
addLoadEvent(secondFunction);
14、DOM core方法
getElementById getElementsByTagName getAttribute setAttribute
它们并不专属于javascript,支持DOM的任何一种语言都可以使用它们。用途也并非仅限于处理网页,可以用来处理任何一种标记语言(比如XML)编写出来的文档。
15、动态创建标记 传统技术:document.write innerHTML
DOM方法:createElement创建元素节点 createTextNode创建文本节点 appendChild insertBefore
16、在DOM看来,一个文档就是一棵节点树。要从DOM的角度去思考问题。
17、元素节点—取值:1 属性节点 文本节点
18、
编写一个insertAfter(DOM木有提供这个方法)
通用型函数,可以用于许多场合
function insertAfter(newElement,targetElement){
var parent = targetElement.parentNode;
if(parent.lastChild==targetElement){
parent.appendChild(newElement);
}else{
parent.insertBefore(newElement,targetElement.nextSibling);
}
}
19、Ajax技术的核心是XMLHttpRequest对象,服务器在向XMLHttpRequest对象发回响应时,浏览器会在不同阶段更新readyState的值,有5个:
0 未初始化
1 正在加载
2 加载完毕
3 正在交互
4 完成
只要readyState属性的值变为4,就可以访问服务器发送回来的数据了。
20、Ajax应用主要依赖于服务器端处理,而不是客户端处理。Hijax就指的是 渐进增强地使用Ajax。