childNodes的基本JavaScript问题

时间:2009-12-04 01:38:51

标签: javascript dom

我是JS初学者。我发布了这个问题,因为我一直试图找到一个解决方案2个小时(凌晨3点,我很想去睡觉)。谢谢理解。

我想获取标记名div的子节点。然后提醒姓名(txtPhone)。

<div class="formfield">
  <input id="txtPhone" name="txtPhone" />

所以:

alert(document.getElementsByTagName("div")...?);

非常感谢!

3 个答案:

答案 0 :(得分:2)

仅使用JavaScript,您所追求的属性为firstChild

提醒元素的名称:

alert(document.getElementsByTagName("div")[0].firstChild.name);

请注意,您正在使用getElementsByTagName返回所有div元素的数组 - 在上面的示例中,我正在访问此set中的第一个元素,因此如果您的div是第一个,这将只返回正确的链接在页面上。

为了解决这个问题,我建议给你想要定位id的div标签,然后使用getElementById(“id”)代替:

<div class="formfield" id="divPhone">
    <input id="txtPhone" name="txtPhone" />

alert(document.getElementsById("divPhone").firstChild.name);

如果您确实想要定位一组元素,我建议使用jQuery的选择器来定位特定元素,例如$(".formfield").firstChild.name

答案 1 :(得分:1)

我还不能发表评论,但我只想添加到Matthew的帖子 - 它实际上是Chrome(和其他webkit浏览器???)那样做,而不是Firefox(但你是对的不是IE)。我刚刚遇到一个网站,该网站出于一些奇怪的原因,使用childNodes [0]从div的集合中获取特定元素,而不是仅仅使用getElementById(因为它知道ID)。我花了很长时间才弄明白问题是什么,直到我逐步看到每个浏览器上每行代码的确切内容。

答案 2 :(得分:0)

这应该这样做:

alert(document.getElementByTagName("div")[0].getElementsByTagName("input")[0].name));

请注意,在您的示例中,div后面有tab / space字符?某些浏览器(Firefox而非内存中的IE)会将空白视为文本节点。因此,firstChild将被设置为包含这些浏览器中的空格的文本节点,您可能不希望这种情况发生。