html select操作

2 篇文章 0 订阅

html中的select标签,也是asp.net中的asp:DropDownList控件。 

javascript对它们的操作 
一、基础理解 

[js]  view plain copy
  1. var e = document.getElementById("selectId");   
  2. e. options= new Option("文本","值") ;   
  3. //创建一个option对象,即在<select>标签中创建一个或多个<option value="值">文本</option>   
  4. //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需要大写 
二 、应用  
[js]  view plain copy
  1. <html>   
  2. <head>   
  3. <script language="javascript">   
  4. function number(){   
  5. var obj = document.getElementById("mySelect");   
  6. //obj.options[obj.selectedIndex] = new Option("我的吃吃","4");//在当前选中的那个的值中改变   
  7. //obj.options.add(new Option("我的吃吃","4"));再添加一个option   
  8. //alert(obj.selectedIndex);//显示序号,option自己设置的   
  9. //obj.options[obj.selectedIndex].text = "我的吃吃";更改值   
  10. //obj.remove(obj.selectedIndex);删除功能   
  11. }   
  12. </script>   
  13. </head>   
  14. <body>   
  15. <select id="mySelect">   
  16. <option>我的包包</option>   
  17. <option>我的本本</option>   
  18. <option>我的油油</option>   
  19. <option>我的担子</option>   
  20. </select>   
  21. <input type="button" name="button" value="查看结果" οnclick="number();">   
  22. </body>   
  23. </html>  

1.动态创建select 
[js]  view plain copy
  1. function createSelect(){   
  2. var mySelect = document.createElement("select");   
  3. mySelect.id = "mySelect";   
  4. document.body.appendChild(mySelect);   
  5. }  

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

3.删除所有选项option 
[js]  view plain copy
  1. function removeAll(){   
  2. var obj=document.getElementById('mySelect');   
  3. obj.options.length=0;   
  4. }  

4.删除一个选项option 
[js]  view plain copy
  1. function removeOne(){   
  2. var obj=document.getElementById('mySelect');   
  3. //index,要删除选项的序号,这里取当前选中选项的序号   
  4. var index=obj.selectedIndex;   
  5. obj.options.remove(index);   
  6. }  

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

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

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

8.删除select 
[js]  view plain copy
  1. function removeSelect(){   
  2. var mySelect = document.getElementById("mySelect");   
  3. mySelect.parentNode.removeChild(mySelect);   
  4. }   
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//ZH-CN" "http://www.w3.org/TR/html4/strict.dtd">   
  6. <html>   
  7. <head>   
  8. <meta http-equiv="Content-Type" content="text/html">   
  9. <head>   
  10. <script language=JavaScript>   
  11. function $(id)   
  12. {   
  13. return document.getElementById(id)   
  14. }   
  15. function show()   
  16. {   
  17. var selectObj=$("area")   
  18. var myOption=document.createElement("option")   
  19. myOption.setAttribute("value","10")   
  20. myOption.appendChild(document.createTextNode("上海"))   
  21. var myOption1=document.createElement("option")   
  22. myOption1.setAttribute("value","100")   
  23. myOption1.appendChild(document.createTextNode("南京"))   
  24. selectObj.appendChild(myOption)   
  25. selectObj.appendChild(myOption1)   
  26. }   
  27. function choice()   
  28. {   
  29. var index=$("area").selectedIndex;   
  30. var val=$("area").options[index].getAttribute("value")   
  31. if(val==10)   
  32. {   
  33. var i=$("context").childNodes.length-1;   
  34. var remobj=$("context").childNodes[i];   
  35. remobj.removeNode(true)   
  36. var sh=document.createElement("select")   
  37. sh.add(new Option("浦东新区","101"))   
  38. sh.add(new Option("黄浦区","102"))   
  39. sh.add(new Option("徐汇区","103"))   
  40. sh.add(new Option("普陀区","104"))   
  41. $("context").appendChild(sh)   
  42. }   
  43. if(val==100)   
  44. {   
  45. var i=$("context").childNodes.length-1;   
  46. var remobj=$("context").childNodes[i];   
  47. remobj.removeNode(true)   
  48. var nj=document.createElement("select")   
  49. nj.add(new Option("玄武区","201"))   
  50. nj.add(new Option("白下区","202"))   
  51. nj.add(new Option("下关区","203"))   
  52. nj.add(new Option("栖霞区","204"))   
  53. $("context").appendChild(nj)   
  54. }   
  55. }   
  56. function calc()   
  57. {   
  58. var x=$("context").childNodes.length-1;   
  59. alert(x)   
  60. }   
  61. function remove()   
  62. {   
  63. var i=$("context").childNodes.length-1;   
  64. var remobj=$("context").childNodes[i];   
  65. remobj.removeNode(true)   
  66. }   
  67. </script>   
  68. <body><div id="context">   
  69. <select id="area" on   
  70. change="choice()">   
  71. </select>   
  72. </div>   
  73. <input type=button value="显示" οnclick="show()">   
  74. <input type=button value="计算结点" οnclick="calc()">   
  75. <input type=button value="删除" οnclick="remove()">   
  76. </body>   
  77. </html>  

根据这些东西,自己用JQEURY AJAX+JSON实现了一个小功能如下: 
JS代码:(只取了于SELECT相关的代码) 
[js]  view plain copy
  1. /**  
  2. * @description 构件联动下拉列表 (用JQUERY 的AJAX配合JSON实现)  
  3. * @prarm selectId 下拉列表的ID  
  4. * @prarm method 要调用的方法名称  
  5. * @prarm temp 此处存放软件ID  
  6. * @prarm url 要跳转的地址  
  7. */   
  8. function linkAgeJson(selectId,method,temp,url){   
  9. $j.ajax({   
  10. type: "get",//使用get方法访问后台   
  11. dataType: "json",//返回json格式的数据   
  12. url: url,//要访问的后台地址   
  13. data: "method=" + method+"&temp="+temp,//要发送的数据   
  14. success: function(msg){//msg为返回的数据,在这里做数据绑定   
  15. var data = msg.lists;   
  16. coverJsonToHtml(selectId,data);   
  17. }   
  18. });   
  19. }   
  20. /**  
  21. * @description 将JSON数据转换成HTML数据格式  
  22. * @prarm selectId 下拉列表的ID  
  23. * @prarm nodeArray 返回的JSON数组  
  24.  
  25. */   
  26. function coverJsonToHtml(selectId,nodeArray){   
  27. //get select   
  28. var tempSelect=$j("#"+selectId);   
  29. //clear select value   
  30. isClearSelect(selectId,'0');   
  31. var tempOption=null;   
  32. for(var i=0;i<nodeArray.length;i++){   
  33. //create select Option   
  34. tempOption= $j('<option value="'+nodeArray[i].dm+'">'+nodeArray[i].mc+'</option> ');   
  35. //put Option to select   
  36. tempSelect.append(tempOption);   
  37. }   
  38. // 获取退化构件列表   
  39. getCpgjThgl(selectId,'thgjDm');   
  40. }   
  41. /**  
  42. * @description 清空下拉列表的值  
  43. * @prarm selectId 下拉列表的ID  
  44. * @prarm index 开始清空的下标位置  
  45. */   
  46. function isClearSelect(selectId,index){   
  47. var length=document.getElementById(selectId).options.length;   
  48. while(length!=index){   
  49. //长度是在变化的,因为必须重新获取   
  50. length=document.getElementById(selectId).options.length;   
  51. for(var i=index;i<length;i++)   
  52. document.getElementById(selectId).options.remove(i);   
  53. length=length/2;   
  54. }   
  55. }   
  56. /**  
  57. * @description 获取退化构件列表  
  58. * @prarm selectId1 引用软件下拉列表的ID  
  59. * @prarm selectId2 退化构件下拉列表的ID  
  60. */   
  61. function getCpgjThgl(selectId1,selectId2){   
  62. var obj1=document.getElementById(selectId1);//引用软件下拉列表   
  63. var obj2=document.getElementById(selectId2);//退化构件下拉列表   
  64. var len=obj1.options.length;   
  65. //当引用软件列表长度等于1时返回,不做操作   
  66. if(len==1){   
  67. return false;   
  68. }   
  69. //清空下拉列表的值,两种方式都可以   
  70. // isClearSelect(selectId2,'1');   
  71. document.getElementById(selectId2).length=1;   
  72. for(var i=0;i<len; i++){   
  73. var option= obj1.options[i];   
  74. //引用软件被选中项不加入   
  75. if(i!=obj1.selectedIndex){   
  76. //克隆OPTION并添加到SELECT中   
  77. obj2.appendChild(option.cloneNode(true));   
  78. }   
  79. }   
  80. }  

HTML代码: 
[js]  view plain copy
  1. <TABLE width="100%" border=0 align="left" cellPadding=0 cellSpacing=1>   
  2. <tr>   
  3. <td class="Search_item_18"> <span class="Edit_mustinput">*</span>引用软件:</td>   
  4. <td class="Search_content_82">   
  5. <input name="yyrjMc" id="yyrjMc" type="text" class="Search_input" tabindex="3" size="30" >   
  6. <input name="yyrjDm" id="yyrjDm" type="hidden" >   
  7. <input type="button" class="Search_button_select"   
  8. onClick="linkAgeTree('linkage','yyrjtree','yyrjMc','yyrjDm','linkageTree','1');" value="选择...">   
  9. </td>   
  10. </tr>   
  11. <tr>   
  12. <td class="Search_item"> <span class="Edit_mustinput">*</span>引用分版:</td>   
  13. <td class="Search_content" id="yyfb">   
  14. <select name="yyfbDm" style="width:160" id="yyfbDm" onChange="getCpgjThgl('yyfbDm','thgjDm')">   
  15. </select>   
  16. </td>   
  17. </tr>   
  18. <tr>   
  19. <td class="Search_item">退化构件:</td>   
  20. <td class="Search_content" id="thgj">   
  21. <select name="thgjDm" style="width:160" id="thgjDm">   
  22. <option value="-1" selected>无</option>   
  23. </select>   
  24. </td>   
  25. </tr>   
  26. </TABLE>  

参考文档:http://www.jb51.net/w3school/htmldom/prop_select_selectedindex.htm

原文地址:http://www.lai18.com/content/358528.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值