选择长度与options.length

时间:2013-10-10 16:52:26

标签: javascript forms dom select

对于select元素,length属性和options.length属性之间是否存在差异?

特别是,我有兴趣知道浏览器支持方面是否存在差异。

3 个答案:

答案 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