我是JS初学者。我发布了这个问题,因为我一直试图找到一个解决方案2个小时(凌晨3点,我很想去睡觉)。谢谢理解。
我想获取标记名div的子节点。然后提醒姓名(txtPhone)。
<div class="formfield">
<input id="txtPhone" name="txtPhone" />
所以:
alert(document.getElementsByTagName("div")...?);
非常感谢!
答案 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将被设置为包含这些浏览器中的空格的文本节点,您可能不希望这种情况发生。