javascript对select标签的控制(option选项/select)


Posted in Javascript onJanuary 31, 2013

html中的select标签,也是asp.net中的asp:DropDownList控件。
javascript对它们的操作
一、基础理解

var e = document.getElementById("selectId"); 
e. options= new Option("文本","值") ; 
//创建一个option对象,即在<select>标签中创建一个或多个<option value="值">文本</option> 
//options是个数组,里面可以存放多个<option value="值">文本</option>这样的标签

1:options[ ]数组的属性:
length属性---------长度属性
selectedIndex属性--------当前被选中的框中的文本的索引值,此索引值是内存自动分配的(0,1,2,3.....)对应(第一个文本值,第二个文本值,第三个文本值,第四个文本值..........)
2:单个option的属性(---obj.options[obj.selecedIndex]是指定的某个<option>标签,是一个---)
text属性---------返回/指定 文本
value属性------返回/指定 值,与<options value="...">一致。
index属性-------返回下标,
selected 属性-------返回/指定该对象是否被选中.通过指定 true 或者 false,可以动态的改变选中项
defaultSelected 属性-----返回该对象默认是否被选中。true / false。
3:option的方法
增加一个<option>标签-----obj.options.add(new("文本","值"));<增>
删除一个<option>标签-----obj.options.remove(obj.selectedIndex)<删>
获得一个<option>标签的文本-----obj.options[obj.selectedIndex].text<查>
修改一个<option>标签的值-----obj.options[obj.selectedIndex]=new Option("新文本","新值")<改>
删除所有<option>标签-----obj.options.length = 0
获得一个<option>标签的值-----obj.options[obj.selectedIndex].value
注意:
a:上面的写的是如这样类型的方法obj.options.function()而不写obj.funciton,是因为为了考虑在IE和FF 下的兼容,如obj.add()只能在IE中有效.
b:obj.option中的option不需要大写,new Option中的Option需要大写
二 、应用
<html> 
<head> 
<script language="javascript"> 
function number(){ 
var obj = document.getElementById("mySelect"); 
//obj.options[obj.selectedIndex] = new Option("我的吃吃","4");//在当前选中的那个的值中改变 
//obj.options.add(new Option("我的吃吃","4"));再添加一个option 
//alert(obj.selectedIndex);//显示序号,option自己设置的 
//obj.options[obj.selectedIndex].text = "我的吃吃";更改值 
//obj.remove(obj.selectedIndex);删除功能 
} 
</script> 
</head> 
<body> 
<select id="mySelect"> 
<option>我的包包</option> 
<option>我的本本</option> 
<option>我的油油</option> 
<option>我的担子</option> 
</select> 
<input type="button" name="button" value="查看结果" onclick="number();"> 
</body> 
</html>

1.动态创建select
function createSelect(){ 
var mySelect = document.createElement("select"); 
mySelect.id = "mySelect"; 
document.body.appendChild(mySelect); 
}

2.添加选项option
function addOption(){ 
//根据id查找对象, 
var obj=document.getElementById('mySelect'); 
//添加一个选项 
obj.add(new Option("文本","值")); //这个只能在IE中有效 
obj.options.add(new Option("text","value")); //这个兼容IE与firefox 
}

3.删除所有选项option
function removeAll(){ 
var obj=document.getElementById('mySelect'); 
obj.options.length=0; 
}

4.删除一个选项option
function removeOne(){ 
var obj=document.getElementById('mySelect'); 
//index,要删除选项的序号,这里取当前选中选项的序号 
var index=obj.selectedIndex; 
obj.options.remove(index); 
}

5.获得选项option的值
var obj=document.getElementById('mySelect'); 
var index=obj.selectedIndex; //序号,取当前选中选项的序号 
var val = obj.options[index].value;

6.获得选项option的文本
var obj=document.getElementById('mySelect'); 
var index=obj.selectedIndex; //序号,取当前选中选项的序号 
var val = obj.options[index].text;

7.修改选项option
var obj=document.getElementById('mySelect'); 
var index=obj.selectedIndex; //序号,取当前选中选项的序号 
var val = obj.options[index]=new Option("新文本","新值");

8.删除select
function removeSelect(){ 
var mySelect = document.getElementById("mySelect"); 
mySelect.parentNode.removeChild(mySelect); 
} 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//ZH-CN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html"> 
<head> 
<script language=JavaScript> 
function $(id) 
{ 
return document.getElementById(id) 
} 
function show() 
{ 
var selectObj=$("area") 
var myOption=document.createElement("option") 
myOption.setAttribute("value","10") 
myOption.appendChild(document.createTextNode("上海")) 
var myOption1=document.createElement("option") 
myOption1.setAttribute("value","100") 
myOption1.appendChild(document.createTextNode("南京")) 
selectObj.appendChild(myOption) 
selectObj.appendChild(myOption1) 
} 
function choice() 
{ 
var index=$("area").selectedIndex; 
var val=$("area").options[index].getAttribute("value") 
if(val==10) 
{ 
var i=$("context").childNodes.length-1; 
var remobj=$("context").childNodes[i]; 
remobj.removeNode(true) 
var sh=document.createElement("select") 
sh.add(new Option("浦东新区","101")) 
sh.add(new Option("黄浦区","102")) 
sh.add(new Option("徐汇区","103")) 
sh.add(new Option("普陀区","104")) 
$("context").appendChild(sh) 
} 
if(val==100) 
{ 
var i=$("context").childNodes.length-1; 
var remobj=$("context").childNodes[i]; 
remobj.removeNode(true) 
var nj=document.createElement("select") 
nj.add(new Option("玄武区","201")) 
nj.add(new Option("白下区","202")) 
nj.add(new Option("下关区","203")) 
nj.add(new Option("栖霞区","204")) 
$("context").appendChild(nj) 
} 
} 
function calc() 
{ 
var x=$("context").childNodes.length-1; 
alert(x) 
} 
function remove() 
{ 
var i=$("context").childNodes.length-1; 
var remobj=$("context").childNodes[i]; 
remobj.removeNode(true) 
} 
</script> 
<body><div id="context"> 
<select id="area" on 
change="choice()"> 
</select> 
</div> 
<input type=button value="显示" onclick="show()"> 
<input type=button value="计算结点" onclick="calc()"> 
<input type=button value="删除" onclick="remove()"> 
</body> 
</html>

根据这些东西,自己用JQEURY AJAX+JSON实现了一个小功能如下:
JS代码:(只取了于SELECT相关的代码)
/** 
* @description 构件联动下拉列表 (用JQUERY 的AJAX配合JSON实现) 
* @prarm selectId 下拉列表的ID 
* @prarm method 要调用的方法名称 
* @prarm temp 此处存放软件ID 
* @prarm url 要跳转的地址 
*/ 
function linkAgeJson(selectId,method,temp,url){ 
$j.ajax({ 
type: "get",//使用get方法访问后台 
dataType: "json",//返回json格式的数据 
url: url,//要访问的后台地址 
data: "method=" + method+"&temp="+temp,//要发送的数据 
success: function(msg){//msg为返回的数据,在这里做数据绑定 
var data = msg.lists; 
coverJsonToHtml(selectId,data); 
} 
}); 
} 
/** 
* @description 将JSON数据转换成HTML数据格式 
* @prarm selectId 下拉列表的ID 
* @prarm nodeArray 返回的JSON数组 
* 
*/ 
function coverJsonToHtml(selectId,nodeArray){ 
//get select 
var tempSelect=$j("#"+selectId); 
//clear select value 
isClearSelect(selectId,'0'); 
var tempOption=null; 
for(var i=0;i<nodeArray.length;i++){ 
//create select Option 
tempOption= $j('<option value="'+nodeArray[i].dm+'">'+nodeArray[i].mc+'</option> '); 
//put Option to select 
tempSelect.append(tempOption); 
} 
// 获取退化构件列表 
getCpgjThgl(selectId,'thgjDm'); 
} 
/** 
* @description 清空下拉列表的值 
* @prarm selectId 下拉列表的ID 
* @prarm index 开始清空的下标位置 
*/ 
function isClearSelect(selectId,index){ 
var length=document.getElementById(selectId).options.length; 
while(length!=index){ 
//长度是在变化的,因为必须重新获取 
length=document.getElementById(selectId).options.length; 
for(var i=index;i<length;i++) 
document.getElementById(selectId).options.remove(i); 
length=length/2; 
} 
} 
/** 
* @description 获取退化构件列表 
* @prarm selectId1 引用软件下拉列表的ID 
* @prarm selectId2 退化构件下拉列表的ID 
*/ 
function getCpgjThgl(selectId1,selectId2){ 
var obj1=document.getElementById(selectId1);//引用软件下拉列表 
var obj2=document.getElementById(selectId2);//退化构件下拉列表 
var len=obj1.options.length; 
//当引用软件列表长度等于1时返回,不做操作 
if(len==1){ 
return false; 
} 
//清空下拉列表的值,两种方式都可以 
// isClearSelect(selectId2,'1'); 
document.getElementById(selectId2).length=1; 
for(var i=0;i<len; i++){ 
var option= obj1.options[i]; 
//引用软件被选中项不加入 
if(i!=obj1.selectedIndex){ 
//克隆OPTION并添加到SELECT中 
obj2.appendChild(option.cloneNode(true)); 
} 
} 
}

HTML代码:
<TABLE width="100%" border=0 align="left" cellPadding=0 cellSpacing=1> 
<tr> 
<td class="Search_item_18"> <span class="Edit_mustinput">*</span>引用软件:</td> 
<td class="Search_content_82"> 
<input name="yyrjMc" id="yyrjMc" type="text" class="Search_input" tabindex="3" size="30" > 
<input name="yyrjDm" id="yyrjDm" type="hidden" > 
<input type="button" class="Search_button_select" 
onClick="linkAgeTree('linkage','yyrjtree','yyrjMc','yyrjDm','linkageTree','1');" value="选择..."> 
</td> 
</tr> 
<tr> 
<td class="Search_item"> <span class="Edit_mustinput">*</span>引用分版:</td> 
<td class="Search_content" id="yyfb"> 
<select name="yyfbDm" style="width:160" id="yyfbDm" onChange="getCpgjThgl('yyfbDm','thgjDm')"> 
</select> 
</td> 
</tr> 
<tr> 
<td class="Search_item">退化构件:</td> 
<td class="Search_content" id="thgj"> 
<select name="thgjDm" style="width:160" id="thgjDm"> 
<option value="-1" selected>无</option> 
</select> 
</td> 
</tr> 
</TABLE>
Javascript 相关文章推荐
js渐变显示渐变消失示例代码
Aug 01 Javascript
js动画效果制件让图片组成动画代码分享
Jan 14 Javascript
js获取当前日期前七天的方法
Feb 28 Javascript
Javascript无参数和有参数类继承问题解决方法
Mar 02 Javascript
javascript倒计时效果实现
Nov 12 Javascript
javascript中this指向详解
Apr 23 Javascript
基于Javascript实现的不重复ID的生成器
Dec 25 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
Sep 12 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
javascript防抖函数debounce详解
Jun 11 Javascript
vue quill editor 使用富文本添加上传音频功能
Jan 14 Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
Jan 30 #Javascript
js+html+css实现鼠标移动div实例
Jan 30 #Javascript
DWR实现模拟Google搜索效果实现原理及代码
Jan 30 #Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
Jan 30 #Javascript
js判断样式className同时增加class或删除class
Jan 30 #Javascript
编写针对IE的JS代码两种编写方法
Jan 30 #Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 #Javascript
You might like
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP4和PHP5共存于一系统
2006/11/17 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
php算法实例分享
2015/07/14 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
python文件操作整理汇总
2014/10/21 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
实习教师自我鉴定
2013/09/27 职场文书
校长寄语大全
2014/04/09 职场文书
供货协议书
2014/04/22 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python