深入理解选择框脚本[推荐]


Posted in Javascript onDecember 13, 2016

前面的话

选择框是通过<select>和<option>元素创建的,又称为下拉列表框。为了方便与这个控件交互,除了所有表单字段共有的属性和方法外,javascript还提供了一些属性和方法。本文将详细介绍选择框脚本

<select>

首先介绍关于<select>元素的相关属性

multiple

multiple属性表示是否允许多项选择

<select name="test" id="test">
 <option>1</option>
 <option>2</option>
 <option>3</option>
</select>
<button id="btn">是否多选</button>
<script>
btn.onclick = function(){
 test.multiple = !test.multiple;
} 
</script>

type

选择框的type属性有两种,一种是'select-one',表示单选;另一种是'select-multiple',表示多选

<select name="test" id="test">
 <option>1</option>
 <option>2</option>
 <option>3</option>
</select>
<button id="btn">是否多选</button>
<div id="result"></div>
<script>
btn.onclick = function(){
 test.multiple = !test.multiple;
 result.innerHTML = test.type;
} 
</script>

value

选择框的value属性由当前选中项决定

1、如果没有选中的项,则选择框的value属性保存空字符串

2、如果有一个选中项,而且该项的value特性已经在HTML中指定,则选择框的value属性等于选中项的value特性。即使value特性的值是空字符串,也同样遵循此条规则

3、如果有一个选中项,但该项的value特性在HTML中未指定,则选择框的value属性等于该项的文本

4、如果有多个选中项,则选择框的value属性将依据前两条规则取得第一个选中项的值

[注意]IE8-浏览器只支持value属性的值,不支持选择的文本值

<select name="test" id="test">
 <option value="a">1</option>
 <option value="b">2</option>
 <option>3</option>
</select>
<button id="btn1">是否多选</button>
<button id="btn2">获取value值</button>
<div id="result"></div>
<script>
btn1.onclick = function(){
 test.multiple = !test.multiple;
} 
btn2.onclick = function(){
 result.innerHTML = test.value;
}
</script>

selectedIndex

selectedIndex属性返回基于0的选中项的索引,如果没有选中项,则值为-1。对于支持多选的控件,只保存选中项中第一项的索引

<select name="test" id="test">
 <option value="a">1</option>
 <option value="b">2</option>
 <option>3</option>
</select>
<button id="btn1">是否多选</button>
<button id="btn2">获取索引</button>
<div id="result"></div>
<script>
btn1.onclick = function(){
 test.multiple = !test.multiple;
} 
btn2.onclick = function(){
 result.innerHTML = test.selectedIndex;
}
</script>

size

size属性表示选择框的可见行数

<select name="test" id="test">
 <option value="a">1</option>
 <option value="b">2</option>
 <option>3</option>
</select>
<button id="btn1">可见1行</button>
<button id="btn2">可见2行</button>
<button id="btn3">可见3行</button>
<div id="result"></div>
<script>
btn1.onclick = function(){
 test.size = 1;
} 
btn2.onclick = function(){
 test.size = 2;
}
btn3.onclick = function(){
 test.size = 3;
}
</script>

options

options属性表示控件中所有的<option>元素

<select name="test" id="test">
 <option value="a">1</option>
 <option value="b">2</option>
 <option>3</option>
</select>
<script>
//[option, option, option, selectedIndex: 0]
console.log(test.options)
</script>

<option>

在DOM中,每个<option>元素都有一个HTMLOptionElement对象表示。为便于访问数据, HTMLOptionElement对象也定义了一些属性

[注意]IE浏览器不支持为<option>元素设置display:none

index

index属性表示当前选项在options集合中的索引

label

label属性表示当前选项的标签

[注意]IE9-浏览器不支持

selected

selected属性表示当前选项是否被选中。将这个属性设置为true可以选中当前选项

text

text属性表示选项的文本

value

value属性表示选项的值

[注意]在未指定value特性的情况下,IE8会返回空字符串;而其他浏览器返回text属性的值

<select name="test" id="test">
 <option value="a" selected>1</option>
 <option value="b">2</option>
 <option>3</option>
</select>
<script>
var option = test.options[0];
console.log(option.index);//0
console.log(option.label);//1,IE9-浏览器返回空字符串''
console.log(option.selected);//true
console.log(option.text);//1
console.log(option.value);//a
</script>

添加选项

【1】添加选项可以使用DOM的appendChild()或insertBefore()方法

<select name="test" id="test">
 <option>1</option>
 <option>3</option>
</select>
<button id="btn">增加选项2</button>
<script>
btn.onclick = function(){
 var newOption = document.createElement('option');
 newOption.innerHTML = 2;
 test.insertBefore(newOption,test.options[1]);
}
</script>

【2】可以使用选择框的add()方法,add(newoption,reloption)方法向控件中插入新<option>元素,其位置在相关项(reloption)之前

使用Option构造函数来创建新选项,接受两个参数:文本(text)和值(value),第二个参数可选

<select name="test" id="test">
 <option>1</option>
 <option>3</option>
</select>
<button id="btn">增加选项2</button>
<script>
btn.onclick = function(){
 var newOption = new Option('2');
 test.add(newOption,1);
}
</script>

移除选项

与添加选项类似,移除选项的方式也有很多种

【1】使用DOM的removeChild()方法

<select name="test" id="test">
 <option>1</option>
 <option>2</option>
 <option>3</option>
</select>
<button id="btn">移除选项2</button>
<script>
btn.onclick = function(){
 test.removeChild(test.options[1]);
}
</script>

【2】使用选择框的remove()方法。这个方法接受一个参数,即要移除选项的索引

[注意]使用该方法的好处是,若不存在被移除选项的索引,不会报错,只是静默失败

<select name="test" id="test">
 <option>1</option>
 <option>2</option>
 <option>3</option>
</select>
<button id="btn">移除选项2</button>
<script>
btn.onclick = function(){
 test.remove(1);
}
</script>

【3】将相应选项设置为null

[注意]该方法同样不会报错

<select name="test" id="test">
 <option>1</option>
 <option>2</option>
 <option>3</option>
</select>
<button id="btn">移除选项2</button>
<script>
btn.onclick = function(){
 test.options[1] = null;
}
</script>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
用js实现小球的自由移动代码
Apr 22 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
Sep 01 Javascript
JS实现iframe自适应高度的方法示例
Jan 07 Javascript
写给vue新手们的vue渲染页面教程
Sep 01 Javascript
详解.vue文件中监听input输入事件(oninput)
Sep 19 Javascript
在vue组件中使用axios的方法
Mar 16 Javascript
区别JavaScript函数声明与变量声明
Sep 12 Javascript
微信小程序自定义底部导航带跳转功能
Nov 27 Javascript
详解webpack4.x之搭建前端开发环境
Mar 28 Javascript
JavaScript内置对象math,global功能与用法实例分析
Jun 10 Javascript
java和js实现的洗牌小程序
Sep 30 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
Dec 13 #Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 #Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 #Javascript
Bootstrap3 datetimepicker控件使用实例
Dec 13 #Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
Dec 13 #Javascript
jQuery Easyui datagrid连续发送两次请求问题
Dec 13 #Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
Dec 13 #Javascript
You might like
php5 mysql分页实例代码
2008/04/10 PHP
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
PHP数组操作类实例
2015/07/11 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
css配合jquery美化 select
2013/11/29 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
python迭代器与生成器详解
2016/03/10 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
python 自定义装饰器实例详解
2019/07/20 Python
python正则-re的用法详解
2019/07/28 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
《大海那边》教学反思
2014/04/09 职场文书
计划生育证明书写要求
2014/09/17 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
队名及霸气口号大全
2015/12/25 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书