筆記:充實文檔內容、CSS-DOM、動畫
充實文檔內容
一般不會用JS添加重要內容到網頁上,主要因為網絡爬蟲(各大搜索引擎的)不一定支持JS。JS應知用來充實文檔內容,而避免用DOM技術創建核心內容。
<abbr>和<acronym>:HTML5中,<acronym>已被<abbr>替代,但在IE早期版本可能會導致一些問題,利用平穩退化的方案(IE瀏覽器在統計abbr元素的子節點個數總是會返回一個錯誤的值“0”,所以在從abbr元素提取屬性值和文本值的循環中添加if(current_abbr.childNodes.length < 1) continue;語句解決)
blockquot元素,其包含一個屬性cite。可以給其一個URL地址,來表示元素內容引自哪里。
注意:在編寫DOM腳本時,會想當然的認為某個節點一定是一個元素節點,這容易犯錯,方法是檢查nodeType屬性值,有很多DOM方法只能用于元素節點,而不能用于文本節點等。
accesskey屬性,可以把一個元素(如鏈接)與肩旁上某個特定案件關聯在一起。Win平臺下用法是按下Alt鍵和特定按鍵;Mac下按下Ctrl鍵和特定按鍵
檢索和添加信息:創建縮略語列表、文獻來源鏈接、快捷鍵清單來使網頁變得更有條理,更易預覽。
CSS-DOM
三層信息:
- 結構層(HTML等標記語言創建)
- 表示層(CSS)
- 行為層(JS語言、DOM)
他們設計應盡量分離
style屬性
style屬性是一個對象
element.style.property
JS吧”-“視為一個減法運算,故不允許出現在標量名和函數中,當CSS樣式中出現連字符,如”font-size“,DOM用駝峰命名法表示,如”fontSize“。
style屬性只能返回內嵌樣式,同時style對象的屬性只能放在引號里。
用DOM腳本設置樣式
nextSibling屬性查找文檔中的下一個節點。headers[i].nextSibling
創建一個getNextElement函數來尋找下一個元素節點
function getNextElement(node) {
if(node.nodeType == 1) {
return node;
}
if (node.nextSibling) {
return getNextElement(node.nextSibling);
}
return null;
}
className屬性
element.className = value;這樣設置某個元素的class屬性是將替換而不追加;
用字符串拼接操作可以完成追加className
elem.className += ”intro”;
抽象:編寫通用函數
動畫效果
時間
setTimeout() 方法
setTimeout(code,millisec)
code:要調用的函數后要執行的 JavaScript 代碼串。
millisec:在執行代碼前需等待的毫秒數。
clearTimeout函數可以取消“等待執行”
setInterval() 方法
setInterval(code,millisec[,"lang"])
code:要調用的函數或要執行的代碼串。
millisec:周期性執行或調用 code 之間的時間間隔,以毫秒計。
parseInt()函數可以把字符串里的數值信息提取出來。
針對賦值為字符串而不是數值的問題。
var xpos = parseInt(elem.style.left);
elem.style.left = xpos + "px";
變量作用域問題:創建一個屬性來消除變量作用域的影響。