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 相关文章推荐
js 在定义的时候立即执行的函数表达式(function)写法
Jan 16 Javascript
innerText和textContent对比及使用介绍
Feb 27 Javascript
解析prototype,JQuery中跳出each循环的方法
Dec 12 Javascript
为jquery的ajaxfileupload增加附加参数的方法
Mar 04 Javascript
JQuery替换DOM节点的方法
Jun 11 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
Dec 28 Javascript
js实现上传并压缩图片效果
Jan 10 Javascript
jquery分页插件pagination使用教程
Oct 23 jQuery
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
Apr 04 Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 Javascript
vue3+typescript实现图片懒加载插件
Oct 26 Javascript
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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
php curl 伪造IP来源的实例代码
2012/11/01 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
python 如何设置守护进程
2020/10/29 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
简述数组与指针的区别
2014/01/02 面试题
科室工作的个人自我评价
2013/10/30 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
委托证明范本
2014/11/25 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
python基础入门之普通操作与函数(三)
2021/06/13 Python
Python访问Redis的详细操作
2021/06/26 Python