length
对于一个select元素, property和property有什么区别options.length
吗?
特别是,我很想知道在浏览器支持方面是否存在差异。
length
对于一个select元素, property和property有什么区别options.length
吗?
特别是,我很想知道在浏览器支持方面是否存在差异。
基于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
两个都
选择长度
和
选择.选项.长度
所有主流浏览器都支持。
它们之间的唯一区别(据我所知)是
select.length
是返回其选项数量的选择属性 - 这就是定义。换句话说length
,在 select 中是这个特定 DOM 元素的特殊属性select.options.length
只返回options
集合中元素的数量(与 相同的逻辑document.getElementsByTagName('div').length
)绝对不一样我必须找出困难尝试
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