![](/img/trans.png)
[英]Using JavaScript, how do you get elements with a specific className that's inside another element by using getElementByClassName?
[英]How to access specific elements with getElementByClassName
我想访问类型为“复选框”的输入元素,并忽略具有“文本”类型的输入标签。
当我使用下面的代码时,我收到一条错误消息:
TypeError: outerField.getElementsByTagName is not a function
有人对如何解决这个问题有建议吗?
JavaScript:
outerField = document.getElementsByClassName("outerField");
checkboxes = outerField.getElementsByTagName("input");
html标记:
<section id="images">
<div class="outerField">
<input type="checkbox">
<img src="lorem.jpg">
<div class="innerField">
<input type="text" value ="">
</div>
</div>
你有错字 该函数称为“ getElementsByClassName”,而不是“ getElementByClassName”(请注意“ Elements”中的“ s”)。
https://developer.mozilla.org/de/docs/Web/API/Document/getElementsByClassName
您将获得每个具有“ outerField”类而不是单个元素的元素。 您必须访问此HTMLCollection中的特定元素。
在您的示例中,这应该可行:
outerField = document.getElementsByClassName("outerField");
checkboxes = outerField.item(0).getElementsByTagName("input");
您可以使用querySelectorAll
,它使用类似CSS的语法来过滤类和复选框:
document.querySelectorAll('.outerField input[type=checkbox]')
document.getElementByClassName("outerField");
应该
document.getElementsByClassName("outerField"); //s was missing:typo
而externalField是一个数组,像
outerField[0].getElementsByTagName("input");
方法名称是getElementsByClassName而不是getElementByClassName。 您将获得一个元素集合作为回报
document.querySelector[All]
(请参阅MDN )使您的生活更加轻松:
var cbxs = document.querySelectorAll('.outerField > input[type=checkbox]'); // demo: show length of cbxs within 'div.outerField') document.querySelector('.outerField') .appendChild(document.createTextNode('length of checkboxes ' + cbxs.length));
<section id="images"> <div class="outerField"> <input type="checkbox"> <img src="lorem.jpg"> <div class="innerField"> <input type="text" value =""> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.