这个 J 小提琴利用 getElementsByClassName
这个 j 小提琴使用 getElementByID
<script>
当我打印出 var "x".... 的长度时,类和 id 版本的长度是不同的。id 版本实际上吐出正确的值,即 4... 而不是 1.... 哪个类吐出。
这个 J 小提琴利用 getElementsByClassName
这个 j 小提琴使用 getElementByID
<script>
当我打印出 var "x".... 的长度时,类和 id 版本的长度是不同的。id 版本实际上吐出正确的值,即 4... 而不是 1.... 哪个类吐出。
document.getElementsByClassName
返回一组具有所有给定类名的元素。在文档对象上调用时,将搜索完整的文档,包括根节点。您也可以在任何元素上调用 getElementsByClassName;它将仅返回具有给定类名的指定根元素的后代元素。
document.getElementById
通过其 ID 返回对元素的引用。
元素长度
length 返回 NodeList 中的项目数。
现在在你的jsfiddles..
document.getElementsByClassName("mySelect" ).length
是 1.. 为什么?document.getElementsByClassName .. 返回一组元素.. 即一个数组.. 由于只有一个类名为“mySelect”的元素,数组的长度将为 1
document.getElementById("mySelect" ).length
是 4. 为什么?document.getElementById 返回对元素的引用,并且由于元素的节点列表中有四个元素..(在您的情况下为 4<option>
秒)所以 Element.length 将返回 4..
GetElementsByClassName 返回一个长度为 1 的集合,因此您需要获取集合的第一个元素并询问其长度。
GetElementById 直接给你元素,然后你问它的长度,它给你孩子的数量。
也许你可以试试这个:
<script>
function displayResult()
{
var x=document.getElementsByName('Select');
alert(x.length);
}
</script>
</head>
<body>
<form>
Select your favorite fruit:
<select Class="mySelect">
<option value="apple" name="Select">Apple</option>
<option value="orange" name="Select">Orange</option>
<option value="pineapple" name="Select">Pineapple</option>
<option value="banana" name="Select">Banana</option>
</select>
显示值
不同之处在于,当您执行时getElementByID
,您将返回一个具有该 ID 的单个 DOM 元素。当您执行getElementsByClassName
时,您将返回一个NodeList
包含分配了该类名的任何 DOM 元素。所以,当你在做 x.length 时,getElementsByClassName
你实际上是在做 NodeList.length ,它是 1。
我认为你真正想要的是var x = document.getElementsByClassName("mySelect")[0].length;
或者它的一些变体。