《JavaScript DOM 编程艺术(第2版)》笔记javascript
JavaScript 是 Netscape 公司和 Sun 公司合做开发的。
DOM 是一套对文档的内容进行抽象和概念化的方法。
今天,几乎全部的浏览器都内置了对 DOM 的支持,只要遵循 DOM 标准,就能够放心大胆的去作。
语句html
建议在每条语句末尾都加上分号。
注释java
// 单行注释 /* 多行注释 多行注释*/
变量node
var mood = "happy"; var age = 33;
数据类型编程
数组canvas
+
,-
,*
,/
,++
,--
,+=
数组
>
,=
,<
,>=
,<=
,==
,!=
,===
.......浏览器
==
并不表示严格相等,认为 false 与 "" 表示的含义相同。app
false == ''; // true
===
进行严格比较,不只比较值,并且比较变量的类型。函数
false === ''; // false
条件语句和循环语句
if (condions) { statemen}
while循环
while (conditions) { statements; }
函数与对象
function name(arguments) { statements; }
对象是一种很是重要的数据类型。
对象的两种访问形式:
Object.property
方法 Object.method()
宿主对象:在Web应用中就是由浏览器提供的预约义对象。
DOM:
对象:O(object)
节点(node):
获取元素:
getElementById
getElementsByTagName
getElementsByClassName
获取属性:
getAttribute
设置属性:
setAttribute
介绍了 DOM 提供的几个新属性:
childNodes
nodeType
nodeValue
firstChild
lastChild
平稳退化(graceful degradation):正确使用 JavaScript 脚本,可让访问者在他们的浏览器不支持 JavaScript 的状况下仍然能顺利地浏览你的网站。不能平稳退化会影响你的网页在搜索引擎上的排名。
"javascript:"
伪协议:这种作法很是很差
伪协议:非标准化的协议。
// 用"javascript:" 伪协议调用 popUp()函数: <a href="javascript:popUp('http://www.example.com/');">Example</a>
内嵌的事件处理函数
<a href="#" onclick="popUp('http://www.example.com/'); return false;">Example</a>
很是很差,由于#
只是建立了一个空连接。
平稳退化办法:将 href
属性设置为真实存在的 URL 地址,让它成为一个有效的连接。
<a href="http://www.example.com/" onclick="popUp(this.href); return false;">Example</a>
这样,即便 javascript 被禁止,这个连接也是可用的。
渐进加强就是用一些额外的信息层去包裹原始数据。按照“渐进加强”原则建立出来的网页几乎都符合“平稳退化”原则。
结构、样式、行为要分离。
对象检测
// 例如 if (!document.getElementById) { return false; }
浏览器嗅探技术
经过提取浏览器供应商提供的信息来解决向后兼容问题。
合并和放置脚本
functionA.js
,functionB.js
,functionC.js
合并到一个脚本文件中,这样能够减小加载页面时发送的请求数量。<script>
标签都放到文档的末尾</body>
标记以前。由于位于<head>
中的脚本会致使浏览器没法并行加载其余文件。压缩脚本
addLoadEvent()
函数须要多个函数都在页面加载时执行。addLoadEvent只有一个参数:打算在页面加载完毕时执行的函数的名字。
function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != "function") { window.onload = func; } else { window.onload = function (){ oldonload(); func(); } } }
注意:用document.createElement
建立一个空白的p元素,想在p元素内部添加内容,实际上内容也是一个文本节点,因此应该document.createTextNode
建立一个文本节点,再用.appendChild
添加到p节点中。
window.onload = function () { var testdiv = document.getElementById("testdiv"); var para = document.createElement("p"); // 建立 p 元素节点 var txt1 = document.createTextNode("This is"); // 建立 文本节点 var em = document.createElement("em"); // 建立 em 元素节点 var txt2 = document.createTextNode("content."); // 建立 文本节点 var txt3 = document.createTextNode("my "); // 建立 文本节点 testdiv.appendChild(para); // 将 p 元素节点添加到 div 中 para.appendChild(txt1); // 将文本节点添加到 p 元素中 para.appendChild(em); para.appendChild(txt2); em.appendChild(txt3); // 将文本节点添加到 em 元素中 }
function insertAfter(newElement, targetElement) { var parent = targetElement.parentNode; if (parent.lastChild == targetElement) { parent.appendChild(newElement); } else { parent.insertBefore(newElement, targetElement.nextSibling); } }
给一个元素追加新的 class:
function addClass(element,value) { if (!element.className) { element.className = value; } else { newClassName = element.className; newClassName+= " "; newClassName+= value; element.className = newClassName; } }
位置position
时间
var variable = setTimeout("function",interval)
clearTimeout(variable)
parseInt
把字符串里的数值信息提取出来