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的inputlimiter 实现字数限制功能
May 30 Javascript
基于jQuery的message插件实现右下角弹出消息框
Jan 11 Javascript
利用js实现选项卡的特别效果的实例
Mar 03 Javascript
ExtJs中gridpanel分组后组名排序实例代码
Dec 02 Javascript
js获取select标签选中值的两种方式
Jan 09 Javascript
JavaScript中判断函数、变量是否存在
Jun 10 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
Aug 06 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
Oct 20 jQuery
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 Javascript
vue生命周期和react生命周期对比【推荐】
Sep 19 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
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 中文乱码解决办法总结分析
2009/07/30 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
JavaScript脚本性能的优化方法
2007/02/02 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python continue继续循环用法总结
2018/06/10 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
Python学习笔记之装饰器
2020/08/06 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
职称自我鉴定
2013/10/15 职场文书
自我鉴定注意事项
2014/01/19 职场文书
十佳青年事迹材料
2014/08/21 职场文书
健康状况证明书
2014/11/26 职场文书
教师个人学习总结
2015/02/11 职场文书
边城读书笔记
2015/06/29 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android