javascript对下拉列表框(select)的操作实例讲解


Posted in Javascript onNovember 29, 2013

这篇文章,主要是关于javascript和select相关的最基本方法,以供不熟悉javascript的人参考。常见的情况是,提出表单结构的人, 不仅仅需要为程序设计逻辑,创建数据结构,还需要设计表单的样式,以及熟悉javascript;某些公司可能会要求您精通photoshop:最初的时候,我们都是全才。

下面是我们例子的基础;这不是一个标准的表单。

<form id="f">
<select size="1" name="s">
<option value="3water.com">三水点靠木</option>
<option value="baidu.com">百度</option>
</select>
</form>

---------------------------------------------------------------------------

<script type="text/javascript"> 
<!-- 
var f = document.getElementById("f"); 
//获得select列表项数目 
document.write(f.s.options.length); 
document.write(f.s.length); 
//当前选中项的下标(从0 开始)(有两种方法) 
//如果选择了多项,则返回第一个选中项的下标 
document.write(f.s.options.selectedIndex); 
document.write(f.s.selectedIndex); 
//检测某一项是否被选中 
document.write(f.s.options[0].selected); 
//获得某一项的值和文字 
document.write(f.s.options[0].value); 
document.write(f.s.options[1].text); 
//删除某一项 
f.s.options[1] = null; 
//追加一项 
f.s.options[f.s.options.length] = new Option("追加的text", "追加的value"); 
//更改一项 
f.s.options[1] = new Option("更改的text", "更改的value"); 
//也可以直接设置该项的 text 和 value 
//--> 
</script> 

//全选列表中的项 
function SelectAllOption(list) 
{ 
for (var i=0; i<list.options.length; i++) 
{ 
list.options[i].selected = true; 
} 
} 

//反选列表中的项 by 3water.com asp学习网 
function DeSelectOptions(list) 
{ 
for (var i=0; i<list.options.length; i++) 
{ 
list.options[i].selected = !list.options[i].selected; 
} 
} 

//返回列表中选择项数目 
function GetSelectedOptionsCnt(list) 
{ 
var cnt = 0; 
var i = 0; 
for (i=0; i<list.options.length; i++) 
{ 
if (list.options[i].selected) 
{ 
cnt++; 
} 
} 
return cnt; 
} 

//清空列表 
function ClearList(list) 
{ 
while (list.options.length > 0) 
{ 
list.options[0] = null; 
} 
} 

//删除列表选中项 
//返回删除项的数量 
function DelSelectedOptions(list) 
{ 
var i = 0; 
var deletedCnt = 0; 
while (i < list.options.length) 
{ 
if (list.options[i].selected) 
{ 
list.options[i] = null; 
deletedCnt++; 
} 
else 
{ 
i++; 
} 
} 
return deletedCnt; 
} 
//此函数查找相应的项是否存在 
//repeatCheck是否进行重复性检查 
//若为"v",按值进行重复值检查 
//若为"t",按文字进行重复值检查 
//若为"vt",按值和文字进行重复值检查 
//其它值,不进行重复性检查,返回false 
function OptionExists(list, optText, optValue, repeatCheck) 
{ 
var i = 0; 
var find = false; 
if (repeatCheck == "v") 
{ 
//按值进行重复值检查 
for (i=0; i<list.options.length; i++) 
{ 
if (list.options[i].value == optValue) 
{ 
find = true; 
break; 
} 
} 
} 
else if (repeatCheck == "t") 
{ 
//按文字进行重复检查 
for (i=0; i<list.options.length; i++) 
{ 
if (list.options[i].text == optText) 
{ 
find = true; 
break; 
} 
} 
} 
else if (repeatCheck == "vt") 
{ 
//按值和文字进行重复检查 
for (i=0; i<list.options.length; i++) 
{ 
if ((list.options[i].value == optValue) && (list.options[i].text == optText)) 
{ 
find = true; 
break; 
} 
} 
} 
return find; 
} 

//向列表中追加一个项 
//list 是要追加的列表 
//optText 和 optValue 分别表示项的文字和值 
//repeatCheck 是否进行重复性检查,参见 OptionExists 
//添加成功返回 true,失败返回 false 
function AppendOption(list, optText, optValue, repeatCheck) 
{ 
if (!OptionExists(list, optText, optValue, repeatCheck)) 
{ 
list.options[list.options.length] = new Option(optText, optValue); 
return true; 
} 
else 
{ 
return false; 
} 
} 

//插入项 
//index 插入位置,当插入位置 >= 列表现有项数量时,其作用相当于不进行重复检查的追加项 
//optText 和 optValue 分别表示项的文字和值 
function InsertOption(list, index, optText, optValue) 
{ 
var i = 0; 
for (i=list.options.length; i>index; i--) 
{ 
list.options[i] = new Option(list.options[i-1].text, list.options[i-1].value); 
} 
list.options[index] = new Option(optText, optValue); 
} 
//将一个列表中的项导到另一个列表中 
//repeatCheck是否进行重复性检查,参见OptionExists 
//deleteSource项导到目标后,是否删除源列表中的项 
//返回影响的项数量 
function ListToList(sList, dList, repeatCheck, deleteSource) 
{ 
//所影响的行数 
var lines = 0; 
var i = 0; 
while (i<sList.options.length) 
{ 
if (sList.options[i].selected && AppendOption(dList, sList.options[i].text, sList.options[i].value, repeatCheck)) 
{ 
//添加成功 
lines++; 
if (deleteSource) 
{ 
//删除源列表中的项 
sList.options[i] = null; 
} 
else 
{ 
i++; 
} 
} 
else 
{ 
i++; 
} 
} 
return lines; 
} 

//列表中选中项上移 
function MoveSelectedOptionsUp(list) 
{ 
var i = 0; 
var value = ""; 
var text = ""; 
for (i=0; i<(list.options.length-1); i++) 
{ 
if (!list.options[i].selected && list.options[i+1].selected) 
{ 
value = list.options[i].value; 
text = list.options[i].text; 
list.options[i] = new Option(list.options[i+1].text, list.options[i+1].value); 
list.options[i].selected = true; 
list.options[i+1] = new Option(text, value); 
} 
} 
} 

//列表中选中项下移 
function MoveSelectedOptionsDown(list) 
{ 
var i = 0; 
var value = ""; 
var text = ""; 
for (i=list.options.length-1; i>0; i--) 
{ 
//3water.com 
if (!list.options[i].selected && list.options[i-1].selected) 
{ 
value = list.options[i].value; 
text = list.options[i].text; 
list.options[i] = new Option(list.options[i-1].text, list.options[i-1].value); 
list.options[i].selected = true; 
list.options[i-1] = new Option(text, value); 
} 
} 
}

 

Javascript 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
初试jQuery EasyUI 使用介绍
Apr 01 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
Apr 27 Javascript
jquery移动listbox的值原理及代码
May 03 Javascript
jQuery判断元素上是否绑定了指定事件的方法
Mar 17 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
Sep 28 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
Nov 17 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
May 31 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 Javascript
谈谈JavaScript中super(props)的重要性
Feb 12 Javascript
layui table单元格事件修改值的方法
Sep 24 Javascript
详解vue3中组件的非兼容变更
Mar 03 Vue.js
js 定时器setTimeout无法调用局部变量的解决办法
Nov 28 #Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 #Javascript
JS小功能(checkbox实现全选和全取消)实例代码
Nov 28 #Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 #Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 #Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 #Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 #Javascript
You might like
PHP Pear 安装及使用
2009/03/19 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
js下利用控制器载入对应脚本
2010/07/17 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
Python实现的中国剩余定理算法示例
2017/08/05 Python
谈谈python中GUI的选择
2018/03/01 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
python实现维吉尼亚算法
2019/03/20 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
天猫超市:阿里巴巴打造的网上超市
2016/11/02 全球购物
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
企业党员公开承诺书
2014/03/26 职场文书
担保书格式及范文
2014/04/01 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL