如何通过标签名访问元素的子元素的子元素
How to access a child of a child of an element by tagname
我需要访问一些元素,这些元素是没有ID的元素的子元素,而该元素是具有ID的元素的子元素。我以为我可以用函数getElementByTagName访问它们,但它不起作用,因为它是一个层次的深度。如何通过标签名访问第三层元素?
我试了如下:
// getElementByTagName for first child elements works
var getForm = document.getElementById("parentElement").getElementsByTagName("form").length;
var output = document.getElementById("outputForm").innerHTML = getForm;
// getElementByTagName for second child elements doesn't work
var getInput = document.getElementById("parentElement").getElementsByTagName("form").getElementsByTagName("input").length;
var output = document.getElementById("outputInput").innerHTML = getInput;
<div id="parentElement">
<form>
First name: <input type="text"><br>
Last name: <input type="text"><br>
</form>
</div>
<p id="outputForm"></p>
<p id="outputInput"></p>
请:没有jQuery解决方案!
Use
querySelectorAll
, 返回文档中与*指定的选择器组*匹配的元素列表。返回的对象为NodeList。
可以迭代NodeList来处理每个元素!
var inputs=document.querySelectorAll('#parentElement input');
console.log(inputs);
<div id="parentElement">
<form>
First name: <input type="text"><br>
Last name: <input type="text"><br>
</form>
</div>
<p id="outputForm"></p>
<p id="outputInput"></p>
getElementsByTagName返回一个集合。你必须使用它的一个元素。试试这个:getElementsByTagName("form")[0]
var getInput = document.getElementById("parentElement").getElementsByTagName("form")[0].getElementsByTagName("input").length;
var output = document.getElementById("outputInput").innerHTML = getInput;
getElementsByTagName("form")返回元素集合,您只能在单个元素中找到"内部元素"。
尝试添加索引0来访问他的子元素:
var getInput = document.getElementById("parentElement").getElementsByTagName("form")[0].getElementsByTagName("input").length;
getElementsByTagName
返回一个HTMLCollection
,不返回和ELement
。
你需要得到第一个索引为
var getInput = document.getElementById("parentElement").getElementsByTagName("form")[0].getElementsByTagName("input").length;
// getElementByTagName for first child elements works
var getForm = document.getElementById("parentElement").getElementsByTagName("form").length;
var output = document.getElementById("outputForm").innerHTML = getForm;
// getElementByTagName for second child elements doesn't work
var getInput = document.getElementById("parentElement").getElementsByTagName("form")[0].getElementsByTagName("input").length;
var output = document.getElementById("outputInput").innerHTML = getInput;
<div id="parentElement">
<form>
First name: <input type="text"><br>
Last name: <input type="text"><br>
</form>
</div>
<p id="outputForm"></p>
<p id="outputInput"></p>
相关文章:
- 访问JSON对象内部的数组元素
- 为什么在这个网站上不能通过JS访问元素
- 如何提供在javascript中编写对对象的重复访问以设置元素样式的简写
- 为什么可以't PHP查找可以使用JS或jQuery访问的元素
- 访问html元素值javascript
- 如何访问JSON元素
- 访问代码生成的输入元素上的keyup事件
- 如何访问jquery中给定元素的上部和下部元素
- iframes:从 iframe 内的子元素访问父元素
- 如何从不同的元素访问聚合物元素中的属性
- 使用 ReactJs 从元素访问输入值
- 从子元素访问范围指令
- 是否可以从另一个元素访问元素函数?聚合物1.0
- 直接从事件处理程序中的目标元素访问敲除绑定值
- 角→渲染和克隆元素->访问范围
- 在单击值数组元素时从该元素访问数据
- Javascript事件——如何创建和存储一个只能被一个元素访问的变量
- 从父元素访问子元素属性的简单方法
- 如何使用jQuery和HTML选择元素访问对象
- onchange 事件是否在内部侦听元素访问器的 setter