dojo/dom-construct
簡介
dojo 針對 Javascript 的擴充其中很大一部份是在對 DOM 的操作上。相對於 Javascript 在操作 DOM 時所使用冗長的 API 函式名稱,dojo 不僅僅提供了一組比較簡單的語法,同時也處理了不同流覽器間相容性的問題。
dojo/dom-construct 的主要作用在透過程式以改變 DOM Tree 的結構,可以增加、減少或替換節點 (node)。主要的函式如下:
- toDom(htmlString)
- 將參數中的 htmlString 字串值轉換成一個節點,並傳回該節點。
- place(node, refNode, position)
- 置於 refNode 的 position 位置; node 參數也可以用 HTML 片段來取代,直接將該 HTML 片段加入 refNode 的 position 位置。positon 的值為字串或數值,預設為 "last"。允許值如下:
- before
- 將 node 置於 refNode 之前。
- after
- 將 node 置於 refNode 之後。
- first
- 將 node 加入,成為 refNode 的第一個子節點。
- last
- 將 node 加入,成為 refNode 最後一個子節點。
- only
- 將 node 加入,成為 refNode 唯一的子節點;此時,refNode 原先所有的子節點都會被清除。
- replace
- 用 node 來替換 refNode。替換後,refNode 節點就不存在了。
- number
- 當 position 的值為一個數值時,dojo 會將 node 加入成為 refNode 的第 number 個子節點。在加入 <ul> 及 <ol> 的清單項目 <li> 時相當便利;計數時由 0 開始。要特別注意的是:refNode 的文字節點 (text node) 也在計數之中,而 0 所代表的便是這個 refNode 的文字節點。以本文的這一段 <ul> 清單為例: 「positon 的值為字串或數值,允許值如下:」這一段文字,便是節點 0。 寫一段小程式測一下便很容易理解了。如果 number 遠大於子節點的個數,則自動成為 refNode 的最後一個子節點。
- create(tag, attrs, refNode, position)
- 這個函式可以一次做完:建立節點、設定節點的屬性及加入節點到 refNode 的 position 的位置。實際使用狀況,看下列例子比較清楚。
- empty(node)
- 將 node 所有的子節點清除。
- destroy(node)
- 將 node 節點本身及其所有子節點都清除。
範例
範例中先建立一個方塊,兩秒後,程式會在方塊中加入 "Now you see me!" 這行文字,再過兩秒會在方塊下方,加入底色為淡藍色的 "New" 字樣。
CSS
<style> html { width:100%; height:100%; } body { margin: 0 auto; width:1000px; height:100%; padding-top:20px; } .box { width:300px; height:200px; padding:10px; border: 2px solid black; } .child { color:blue; } </style>
CSS 中設定一個方塊的外觀屬性,及用 .child{} 設定方塊中三個段落中字體的顏色。
HTML
<body class="claro">Wait for a few seconds
here</body>I am the First child node
I am the Second child node
I am the Third child node
Html 中建立一個具有三個 <p> 標記的 <div>。
Script
第 18 行的效果等於第 15~16 行兩行的效果。
沒有留言:
張貼留言