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


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 相关文章推荐
javascript 单选框,多选框美化代码
Aug 01 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
Oct 09 Javascript
Js 时间函数getYear()的使用问题探讨
Apr 01 Javascript
js的匿名函数使用介绍
Dec 11 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
Feb 28 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
Apr 08 Javascript
微信小程序开发探究
Dec 27 Javascript
js实现分页功能
May 24 Javascript
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
Nov 06 Javascript
解决vue 打包发布去#和页面空白的问题
Sep 04 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 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
在PHP中使用灵巧的体系结构
2006/10/09 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
基于Node的Axure文件在线预览的实现代码
2019/08/28 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
Python中的sort()方法使用基础教程
2017/01/08 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
python实现静态web服务器
2019/09/03 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
公司接待方案
2014/03/08 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
社区科普工作方案
2014/06/03 职场文书
校本研修个人总结
2015/02/28 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
python绘制箱型图
2021/04/27 Python