3

length对于一个select元素, property和property有什么区别options.length吗?

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

4

3 回答 3

8

基于https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement没有功能上的区别,只有“如果你想真正了解它的语义”区别:

  • select.length被正式声明为 select 元素包含的选项元素的数量。根据规范定义,它将始终具有与 相同的值select.options.length,即:

  • select.options.length是“选择元素上的选项子节点列表中的元素数”。技术差异,语义上略有不同,但由于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

于 2013-10-10T17:08:03.367 回答
3

两个都

选择长度

选择.选项.长度

所有主流浏览器都支持。

它们之间的唯一区别(据我所知)是

  • select.length是返回其选项数量的选择属性 - 这就是定义。换句话说length,在 select 中是这个特定 DOM 元素的特殊属性
  • select.options.length只返回options集合中元素的数量(与 相同的逻辑document.getElementsByTagName('div').length
于 2013-10-10T16:55:41.747 回答
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
于 2019-04-05T15:33:02.973 回答