2012-08-07 81 views
1

我想通過它的父節點訪問使用DOM層次結構節點結構的元素。我試圖通過螢火蟲找到DOM層次結構;想是這樣,<parent_node1>.<child_node1>.<child_node2>不是document.getElementByIDgetElementbyname)來訪問的元素。如何使用其DOM層次結構(父元素)訪問元素?

我想自動化一個場景,例如,我有列標題和相應的值。要測試,每列標題下出現的值,是否正確?

我想使用DOM作爲自動化這種情況的方法。但是,我怎麼能找到DOM層次... ?

我所看到的,通過在Firebug檢查元素的事件,元素類似,列表中,並沒有看上去像一個層次節點結構......有人可以在這方面提供幫助嗎?

+1

你的意思是'element.childNodes'集合,'element.firstChild'或類似嗎? http://www.javascriptkit.com/domref/elementproperties.shtml – 2012-08-07 12:13:39

+0

@TorstenWalter謝謝!這個鏈接非常有用......事實上,由於問題是處理表格內容......通過行[]函數獲取行將會很有幫助......您能否以此爲答案,並舉例說明。 。!:) – Mannii88 2012-08-07 13:23:39

回答

1

正如所討論的,您可能是指DOM Element propertieselement.childNodes,element.firstChild或類似。

看一看的DOM Element property reference over at JavaScriptKit,你會得到一個很好的概述,存在如何訪問層級。

var currentTD = document.getElementsByTagName("td")[0]; 
var currentTable = document.getElementsByTagName("table")[0]; 

currentTD.parentNode // contains the TR element the TD resides in. 
currentTable.childNodes // contains THEAD TBODY and TFOOT if present. 

DOM Tables even have more propertiesrows收集和cells集合。

謹慎的提醒:要注意的是,這些藏品都是活的集合,因此遍歷他們在每個迭代訪問collection.length可真慢,因爲得到的長度,在DOM每次進行查詢。

1

document.getElementByIddocument.getElementByTagname是使用DOM的。他們在DOM中獲取一個對象(特別是文檔對象,儘管您也可以調用這兩個元素),並分別返回一個單個元素或零個或多個元素集合的對象。這是一個DOM操作。從那裏,你可以做的結果其他的DOM操作,比如讓兒童,父母或兄弟姐妹,改變價值觀念等

所有DOM操作歸結爲:

  1. 以一個起點。這通常是document,不過經常我們做的第一件事就是致電document.getElementByIddocument.getElementByTagname,然後根據我們可以真正考慮的結果開始工作。
  2. 通過startingPoint.getElementById *或startingPoing.getElementByTagname可能結合一些測試(例如,只處理那些特定的classname,如果他們有特定類型的孩子等),查找我們感興趣的元素或相關元素。
  3. 讀取和/或修改某個值,添加新的子節點和/或刪除節點。

在像您這樣的情況下,起點將是document.getElementById(someID)document.getElementById(someID).getElementsByTagname('table')[0],或類似的發現一個或多個表。從該表中,myTable.getElementsByTagname('th')將會爲您提供列標題。根據結構你可以從myTable.getElementsByTagname('td')中選擇相應的元素,或者瀏覽每行,然後在curRow.getElementsByTagname('td')上工作。 您也可以使用firstChild,childNodes等,儘管通常您可以更方便地使用標記名過濾出的元素。

*由於在文檔中只能有一個帶有給定ID的元素,因此如果在文檔層次結構中的任何元素上調用該元素,它將返回相同的結果,因此我們通常只在document上調用此元素。如果我們想要做某些事情,如果元素是我們當前元素的後代,而不是其他元素,那麼在元素上調用它會很有用。

+0

感謝Jon!:)你的回答非常詳細,非常有幫助......!:)我衷心感謝並感謝你的幫助 – Mannii88 2012-08-08 15:12:27