对于select元素,length
属性和options.length
属性之间是否存在差异?
特别是,我有兴趣知道浏览器支持方面是否存在差异。
答案 0 :(得分:6)
基于https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement没有功能差异,只有“语义,如果你想真正了解它”的区别:
select.length
被正式声明为select元素包含的选项元素的数量。它将通过spec-definition始终具有与select.options.length
相同的值,即:
select.options.length
是“select元素上选项列表中的元素数量”。技术差异,在语义上略有不同,但由于select.length
的形式化,所有意图和目的总是相同的值。
所以第一个技术上“生活”在<select>
元素上,第二个存在于options
元素的<select>
属性上(这是一个HTMLOptionsCollection,而不是数组!),但是价值总是一样的,你使用它并不重要。实现规范的浏览器(参见[1]和[2])总是给出正确的值。
[1] http://www.w3.org/TR/2002/PR-DOM-Level-2-HTML-20021108/html.html#ID-5933486
[2] http://www.w3.org/TR/2002/PR-DOM-Level-2-HTML-20021108/html.html#HTMLOptionsCollectionwill
答案 1 :(得分:3)
两者
select.length
和
所有主流浏览器都支持select.options.length
。
他们之间的唯一区别(据我所知)是
select.length
是select属性,它返回其选项数 - 这就是定义。换句话说,select中的length
是此特定DOM元素的特殊属性select.options.length
只返回options
集合中的元素数量(与document.getElementsByTagName('div').length
相同的逻辑)答案 2 :(得分:0)
绝对不同,我必须找出艰难的尝试
HTML / PHP中定义了3个选项
调用JQUERY函数,结果为
在组合框中选择任何内容之前
console.log(select.length); // 1
console.log(select.options.length); // undefined
选择某物后
console.log(select.length); // 3
console.log(select.options.length); // 3