本文介绍如何在JavaScript中获取Select下拉框的选中值。通过selectedIndex获取索引,进而获取Option对象。重点解析了当Option未定义value属性时,不同浏览器(如IE与Firefox/Safari)的行为差异,并提供兼容代码以正确返回value或text。
- 若Select元素内的所有Option均未设置selected属性,浏览器默认选中列表中的第一项。
- 利用select.selectedIndex属性,可以获取当前被选中Option元素的索引值。
- 通过select.options[select.selectedIndex]表达式,即可定位并获取到具体的Option DOM对象。
- 对于带有value属性的Option元素(例如<option selected="selected" value="value3">text3</option>),可通过option.value属性获取其value值(即value3),或通过option.text属性获取其显示文本(即text3)。
- 当Option元素未显式定义value属性时,存在浏览器兼容性问题:IE浏览器中option.value无法获取有效值,而Safari、Opera及Firefox等浏览器仍可通过option.value获取到与option.text相同的值。
- 为确保兼容性,可通过检查option.attributes.value是否存在且specified属性为true,来判断Option是否明确定义了value属性。
JavaScript 获取 Select 下拉框选中值的方法与兼容性处理
基于上述逻辑,获取Select当前值的完整脚本实现如下。
代码如下:
var getSelectValue = funtion(select) {
var idx = select.selectedIndex,
option,
value;
if (idx > -1) {
option = select.options[idx];
value = option.attributes.value;
return (value && value.specified) ? option.value : option.text);
}
return null;
}