2012-08-07 85 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