《JavaScript DOM編程藝術》筆記


知識點:

注意代碼分離:

    • CSS表示層
    • JS行為層
    • HTML內容

標記良好的代碼就是一切!

Html:

  • id實現頁內導航: id=here <a href="#here"/>
  • XHTML : <img /><br />為了向后兼容,反斜杠前有一個空格

JS:

  • js關聯數組:vocalist[“piano”][name]=“Jhon”;
  • js內建對象:Array()\Date()\Math
  • 宿主對象:Form\Image\Element
  • Var variable=setTimeout("functionName",1000ms);隔一段時間執行一次函數
  • clearTimeOut(variable);清除等待隊列中的函數
  • parseInt("")的返回值永遠是整數
  • element.property 可以為元素創建屬性
  • Math.ceil(number);向大於方向舍入最接近的整數
  • Math.floor(number);~~小於~~
  • Math.round(7.53438);四舍五入:向最接近的整數舍入
  • 當前頁面的urlwindow.location.href;
  • String.indexOf(subString) ;
  • String.splitting(char):以char將string分成數組,char屬於前一個
  • window.onload = functionName;
  • /*頁面加載完畢再執行,可重寫使頁面加載時執行若干函數(eg:
  • addLoadEvent(preparePlaceholder);
  • addLoadEvent(prepareGallery);
  • )*/


CSS:

  • 選擇器、默認繼承,因此特殊性大的要后定義
  • z-index 屬性設置元素的堆疊順序,數值越大,越在前面,PS:僅能在定位元素上奏效
  • overflow:visible\hidden\scroll\auto;全看到、隱藏多出的部分、滾動條、又多出才有滾動條
  • margin: 1em 10%;缺少4做外邊距從2右外邊距復制,缺少3下外邊距,從1上外邊距復制;百分數是相對於父元素算的
  • display:inline-block;行內塊
  • margin:auto;居中顯示
  • list-style:none;去掉ul\li\id等元素的默認樣式
  • text-decoration:none;a沒有下划線
  • text-align:center;文字居中顯示
  • imv的alt屬性有利於圖片被搜索到;title屬性,鼠標懸停會顯示
  • <html lang=“zh-CN”>
  • <meta charset="utf-8">
  • 定義列表<dl><dt><dd>標題和描述
  • search robot對em、strong的內容會關注
  • 引用:block quote 自動縮進; cite屬性標志引用來源
  • <pre>保留換行、顯示代碼

 

DOM方法和屬性:


0、
CSS-DOM:

元素節點:
1\與位置相關的屬性:firstChild\lastChild\nextSibling\previousSibling\parentNode\ChildNodes
2\與本身有關屬性:nodeType\nodeName
3\style 屬性,返回對象:elementt.style.property,屬性以駝峰命名方式,不能檢索外部CSS文檔的信息
4\element.className 可讀可寫 ;等價於element.setAttribute("class","className")


1、

    • element.childNodes 含給定元素節點的子元素數組
    • node.firstChild=node.childNodes[0]
    • node.lastNode
    • node.nodeValue 返回節點的值
    • Reference=node.cloneNode(deep:true\false);返回指向新節點的指針,true子節點一起復制,但屬性節點會一起復制
    • Parent=element.removeChild(node);
    • Parent=element.replaceChild(new,old);
    • insertAfter()自己寫
    • attributeValue = element.getAttribute(attributeName);返回屬性值
    • booleanValue=element.hasChildNodes;


2、

    • node.nodeType 代表節點的數字,12種:元素節點1、屬性節點2、文本節點3、

3、

1級DOM(DOM Core):  HTML-DOM  返回類型
document.getElementById(“idValue”)   return 元素節點對象
document/element.getElementByTagName(“tag name”) documet.TagName(eg:document.body == document.getElementByTagName("body")[0] return 整個文檔/元素下所有的對象的數組
element/object.getAttribute(“Attribute”) element.attributeName return 屬性值
object.setAttribute(“Attribute”,”Attribute Value”) element.attributeNAme = Attribute Value 不會改變文檔本身的源代碼:動態刷新不影響文檔靜態內容 

4、
用JS寫入HTML:node.nodeValue="value";

舊方法:

    • document.whrite(“HTML statement”)
    • innerHTML();讀寫,無法區分插入、替換,並且會替換源文件

DOM:只改變DOM節點樹,對源文件不做物理性改變/*不要濫用,重要內容不要用這種方式添加*/

    • createElement("nodeName");返回指向新節點的指針
    • document.createTextNode("Text");返回指向新節點的指針
    • parent.appendChild(child);
    • insertBefore();

Ajax:

    • 異步:不用每次做出一個改動就重新刷新整個頁面;
    • 快速透明:google的及時關鍵詞提示;
    • XMLHttpRequest

===============優雅的分割線====================

寫優雅的代碼應該注意什么?

  • 程序被執行的順序:從上到下、if分支、while等循環、中斷異常
  • 程序化設計:一個入口一個出口;/*實際中為了功能和代碼的優雅可以不遵循*/

黃金准則:
1、循序漸進:從最核心的內容(用HTML給核心內容加上最正確的標簽,使她呈現正確的結構),然后逐步充實內容!
2、預留退路


寫HTML需要注意什么?

1、使用的標記必須與做出的doctype聲明保持一致!

2、寫語義正確的HTML代碼

3、Html 變量名應該用功能性命名,而不是樣式命名

HTML5的意義:
標准 跨瀏覽器 標准的重要性 兼容
/*瀏覽器嗅探,很難做到面面俱到,還使代碼復雜*/

 

CSS不要過度依賴類選擇器\ID選擇器,要組合使用類型后代id和類\偽類

Js要注意空的判斷,使程序不會異常退出:
1、檢測dom方法、檢測對象,為程序預留退路(沒有js也不影響內容的正常顯示)

2、檢測不到對象,程序也能正常運行

 

================================================================================

參考:《JavaScript  DOM編程藝術》pdf和隨書代碼

        w3school在線教程

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM