javascript Select标记中options操作方法集合


Posted in Javascript onOctober 22, 2008

javascript操作Select标记中options集合
先来看看options集合的这几个方法:
options.add(option)方法向集合里添加一项option对象;
options.remove(index)方法移除options集合中的指定项;
options(index)或options.item(index)可以通过索引获取options集合的指定项;

javascript代码如下:

var selectTag = null; //select标记
var OPTONLENGTH = 10; //每次填充option数
var colls = []; //对select标记options的引用

window.onload = function(){
selectTag = document.getElementById("SelectBox"); //获取select标记
colls = selectTag.options; //获取引用
//initSelectBox(); //自初始化select.options
};

//使用随机数填充select.options
function initSelectBox(){
var random = 0 ;
var optionItem = null;
var item = null;

if(colls.length > 0 && isClearOption()){
clearOptions(colls);
}

for(var i=0;i<OPTONLENGTH;i++){

random = Math.floor(Math.random()*9000)+1000;
item = new Option(random,random); //通过Option()构造函数创建option对象
selectTag.options.add(item); //添加到options集合中
}

watchState();
}
//添加新option项前是否清空当前options
function isClearOption(){
return document.getElementById("chkClear").checked;
}
//清空options集合
function clearOptions(colls){
var length = colls.length;
for(var i=length-1;i>=0;i--){
colls.remove(i);
}
}
//添加一项新option
function addOption(){
colls.add(createOption());
lastOptionOnFocus(colls.length-1);
watchState();
}
//创建一个option对象
function createOption(){
var random = Math.floor(Math.random()*9000)+1000;
return new Option(random,random);
}
//删除options集合中指定的一项option
function removeOption(index){
if(index >= 0){
colls.remove(index);
lastOptionOnFocus(colls.length-1);
}
watchState();
}
//获取当前选定的option索引
function getSelectedIndex(){
return selectTag.selectedIndex;
}
//获取options集合的总数
function getOptionLength(){
return colls.length;
}
//获取当前选定的option文本
function getCurrentOptionValue(index){
if(index >= 0)
return colls(index).value;
}
//获取当前选定的option值
function getCurrentOptionText(index){
if(index >= 0)
return colls(index).text;
}
//使用options集合中最后一项获取焦点
function lastOptionOnFocus(index){
selectTag.selectedIndex = index;
}
//显示当select标记状态
function watchState(){
var divWatch = document.getElementById("divWatch");
var innerHtml="";
innerHtml = "option总数:" + getOptionLength();
innerHtml += "<br/>当前项索引:" + getSelectedIndex();
innerHtml += "<br/>当前项文本:" + getCurrentOptionText(getSelectedIndex());
innerHtml += "<br/>当前项值:" + getCurrentOptionValue(getSelectedIndex());
divWatch.innerHTML = innerHtml;
divWatch.align = "justify";
}

注意到上面创建option项时,使用了Option()构造函数,这个构造函数有两个版本的重载。
1、var option = new Option(text,value); //这里要大写Option()
2、var option = new Option();
option.text = text;
option.value=value;
我个人比较喜欢第一种方法来创建option对象。
另外,select标记还有一个比较有用的属性就是selectedIndex,通过它可能获取当前选择的option索引,或通过索引设置指定options集合中哪一项被选择。
select.selctedIndex = select.options.length-1; //将options集合中最后一项选中
var selectedItem = select.options(select.selectedIndex);//获取当前选中项
selectedItem.text; //选中项的文本
selectedItem.value; //选中项的值

<BODY>
<Select name="SelectBox">
</Select>
<hr/>
<div id="divWatch" style="background-color:beige;width=220;">
</div>
<hr/>
<h4>使用随机数初始化SelectBox</h4>
<input type="button" value="Init" onclick="initSelectBox()"/> <input type="checkbox" name="chkClear"/>clear
<hr/>
<h4>添加option项</h4>
<input type="button" value="create" onclick="addOption()"/>
<hr/>
<h4>删除option项</h4>
<input type="button" value="delete" onclick="removeOption(colls.length-1)"/>
</BODY>
检测是否有选中
if(objSelect.selectedIndex > -1) {
//说明选中
} else {
//说明没有选中
}

删除被选中的项
objSelect.options[objSelect.selectedIndex] = null;

增加项
objSelect.options[objSelect.length] = new Option("你好","hello");

修改所选择中的项
objSelect.options[objSelect.selectedIndex] = new Option("你好","hello");

得到所选择项的文本
objSelect.options[objSelect.selectedIndex].text;

得到所选择项的值
objSelect.options[objSelect.selectedIndex].value;

Javascript 相关文章推荐
jquery对象和DOM对象的区别介绍
Aug 09 Javascript
处理及遍历XML文档DOM元素属性及方法整理
Aug 23 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
Jan 08 Javascript
JavaScript中实现map功能代码分享
Jun 11 Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 Javascript
JavaScript 对象详细整理总结
Sep 29 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
Mar 13 Javascript
Vue封装Swiper实现图片轮播效果
Feb 06 Javascript
Vue完整项目构建(进阶篇)
Feb 10 Javascript
Webpack path与publicPath的区别详解
May 03 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
Feb 27 Javascript
公众号SVG动画交互实战代码
May 31 Javascript
JavaScript Undefined,Null类型和NaN值区别
Oct 22 #Javascript
javascript TextArea动态显示剩余字符
Oct 22 #Javascript
Javascript this关键字使用分析
Oct 21 #Javascript
JQuery AJAX实现目录浏览与编辑的代码
Oct 21 #Javascript
JavaScript confirm选择判断
Oct 18 #Javascript
javascript脚本编程解决考试分数统计问题
Oct 18 #Javascript
提高网站信任度的技巧
Oct 17 #Javascript
You might like
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
php微信支付接口开发程序
2016/08/02 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
python动态网页批量爬取
2016/02/14 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
python3对接mysql数据库实例详解
2019/04/30 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
物业经理求职自我评价
2013/09/22 职场文书
铲车司机岗位职责
2014/03/15 职场文书
学生实习证明范文
2014/09/28 职场文书
个人合伙协议书范本
2014/10/14 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
思想品德课教学反思
2016/02/24 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
HTML常用标签超详细整理
2022/03/19 HTML / CSS