顯示具有 [讀書心得]JavaScript DOM編程藝術 標籤的文章。 顯示所有文章
顯示具有 [讀書心得]JavaScript DOM編程藝術 標籤的文章。 顯示所有文章

2018年7月2日 星期一

【JavaScript DOM編程藝術】Ch4:childNodes+nodeType+nodeValue+firstChild+lastChild 圖片加載範例


getAttribute、setAttribute

getAttribute:可以「得到」節點特定屬性的值
setAttribute:可以「改變」節點特定屬性的值

childNodes

可以獲得「子節點們的數組」,然後會發現子節點比想像的多
那是因為幾乎頁面中所有東西(包括換行、空白符號)都會變成節點
node有三種
1.元素節點
2.屬性節點
3.文本節點
 window.onload = getchild
        function getchild() {
            var childrennode = document.querySelector("body").childNodes
            console.log(childrennode)
        }

nodeType

nodeType:可以得到節點的類型
1代表「元素節點」
2代表「屬性節點」
3代表「文本節點」

nodeValue

nodeValue可以用來得到「節點的值」
<p id=“chos”>選擇圖片</p>

<script>
 var chos = document.querySelector("#chosepic")
 console.log(chos.nodeValue)  //不會得到東西,因為chos是P標籤,而P標籤沒有屬性
 console.log(chos.childNodes[0].nodeValue)  //我們想要的是P標籤的子節點(文本節點)的屬性
</script>

圖片加載

<body>
    <h1>練習</h1>
    <ul>

        <li>
            <a title="nissen" onclick="change(this);return false;" href="./img/01.jpg">照片一</a>
        </li> //return false可以阻止事件發生,this可以把自己當參數傳回去function
        <li>
            <a title="light" onclick="change(this);return false;" href="./img/02.jpg">照片二</a>
        </li>
        <li>
            <a title="dark" onclick="change(this);return false;" href="./img/03.jpg">照片三</a>
        </li>
    </ul>
    <img id="placeholder" src="./img/02.jpg" alt="">
    <p id="chosepic">選擇圖片</p>
    <script>
        function change(picsrc) {
            var source = picsrc.getAttribute("href") /
            var placeholder = document.querySelector("#placeholder")
            var text = picsrc.getAttribute("title")
            var chosepic = document.querySelector("#chosepic")
            placeholder.setAttribute("src", source)
            chosepic.firstChild.nodeValue = text
        }
    </script>
</body>

【JavaScript DOM編程藝術】Ch2:JavaScript語法




.最好引入script的標籤是放到<BODY>的標籤尾端(而不是head裡面),這樣可以更快加載網頁

.程式語言分為「解釋型」、「編譯型」兩大類,Java/C++等語言需要一個編譯器,編譯器是一種程序,能夠把高級語言編寫出來的代碼直接在電腦上執行(因此寫的時候如果有錯,可以馬上被發現) ex:英文是一種解釋型語言
.「解釋型」的語言不需要編譯器,他只需要解釋器(必須等到執行時,才能發現是否有錯誤)
.「編譯型」語言往往速度更快,可移植行更好

.一般命名常用格式是「底線」Person_tall
.函式名、方法名、對象屬性常用的命名格式是「駝峰」 OnClick

.反斜線並不是字串的一部分 「\」,他是一種跳脫字元

.數組的聲明

(1)Var battles = Array(4)  可以先聲明數組的長度,然後再填入東西
battles[0]=1
battles[1]=2
battles[2]=3
battles[3]=4

(2)Var battles = Array("1"."2","3","4")

(3)Var battle= [1,2,3,4]  可一一次弄進去

.關連數組,可以用字串代替數字,但是這不是一種好習慣,不如使用物件就好

Var battles = new Array()
battles["name"]="Jonny"
battles["age"]=18
battles["living"]=false

.物件宣告

(1)Var battles = new Object()
battles.name="Jonny"
battles.age=18
battles.living=false

(2) battles={
battles.name="Jonny",
battles.age=18,
battles.living=false
}

.+= 一次完成加法和賦值

.函數不僅可以接受數值,還可以返回數值,並當成變數來使用(藉由return)

.作用域(Scope):如果使用var,那個變量就會根據上下文變成區域變數(一個缺乏var的變數會是全局變數)



【內建對象】:JS當中有許多內建對象Object,像是數列Array其實就是

var battles= new Array()
其實就是增加了一個Array的物件
因此battles.length可以查詢長度(因為length是這個物件的一個屬性)

var current_date= new Date()
也是增加了一個Date的物件
因此可以使用Date.getDay()各種方法(因為getDay()是物件的一個方法)

【宿主對象】

上述都是JS預定好的對象,但瀏覽器本身其實也會提供一些對象,這些稱為宿主對象。例如document對象
 

2018年6月28日 星期四

【JavaScript DOM編程藝術】Ch1:DOM標準化的歷史(過去是個大家寫網頁寫ㄉ很痛苦的時代呀)


終於知道為什麼這本書這麼經典了,真的超好看!!一點也不會無聊!!!


第一章

  • ECMA是「歐洲計算機製造商協會」的簡稱,當初是他和Sun和Netscape公司聯合對JavaScript語言進行標準化,所以ECMAScript這個名字其實是JS的另個名字,只是沒有比JS這個名字流行
  • JS是一種腳本語言,只能透過Web去完成一些操作。他不像Java和C那樣「編譯型」語言用途廣泛(不太明白編譯型是什麼意思)
  • DOM是一套對文檔進行「抽象」和「概念化」的方法
  • DHTML是Dynamica HTML的簡稱,他不是新技術,而是一個描述HTML+CSS+JS組合的術語(但是現在不流行)
  • 以前的瀏覽器開發商都會開發自己的DOM,無法互相兼容,所以大家就寫程式寫得很痛苦。然後W3C就站出來結合大家DOM優點,推出一套標準化的DOM,所以現在大家才不用寫很多程式
  • DOM是一種API,API是一種「大家共同認可的約定」。因此摩斯密碼、國際時鐘、化學元素其實也可以叫做API
  • 用PHP和Python解析XML文檔的時候,DOM的知識也很有幫助
  • W3C對DOM的定義是「一個與系統平台和程式語言無關的接口」程序和腳本可以透過這個接口動態訪問和修改文檔內容結構與樣式。
  • 以前Netscape瀏覽器和IE瀏覽器對CSS的支持也很多不同,最後大家真的寫到很不爽,所以就有個WaSP小組出來鼓勵大家採用W3C制訂的標準。
  • 2003蘋果推出的Safari瀏覽器一開始就使用DOM標準,然後之後包括火狐、估狗、IE、Webkit等很多瀏覽器也都開始使用標準DOM(很多手機會用Webkit渲染引擎)
  • 現在幾乎所有瀏覽器都使用W3c的DOM標準,所以大家從此過著幸福的codeing生活(應該不會)

【JavaScript】用物件Mapping的方法

If的寫法 我們希望當變數是a時就回傳1,變數是b就回傳2,變數是c就會回傳3,一般寫法就是用if,但是這樣會很冗 ​ // IF style var word if(word == 'a'){ word = 1 } else if...