(转载)javascript操作Select标记中options集合

本文介绍如何使用JavaScript操作HTML中的Select元素,包括添加、删除选项,以及获取选中项的值和文本等内容。
 
[ 2007-8-6 17:03:00 | By: ibrahim ]
 

javascript操作Select标记中options集合

先来看看options集合的这几个方法:
options.add(option)方法向集合里添加一项option对象;
options.remove(index)方法移除options集合中的指定项;
options(index)或options.item(index)可以通过索引获取options集合的指定项;

javascript代码如下:

None.gifvar selectTag = null//select标记
None.gif
    var OPTONLENGTH = 10//每次填充option数
None.gif
    var colls = [];       //对select标记options的引用
None.gif

ExpandedBlockStart.gifContractedBlock.gif    window.onload 
= function()dot.gif{
InBlock.gif        selectTag 
= document.getElementById("SelectBox"); //获取select标记        
InBlock.gif
        colls = selectTag.options; //获取引用
InBlock.gif
        //initSelectBox();    //自初始化select.options
ExpandedBlockEnd.gif
    }
;
None.gif    
None.gif    
//使用随机数填充select.options
ExpandedBlockStart.gifContractedBlock.gif
    function initSelectBox()dot.gif{
InBlock.gif        
var random = 0 ;
InBlock.gif        
var optionItem = null;
InBlock.gif        
var item = null;
InBlock.gif        
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if(colls.length > 0 && isClearOption())dot.gif{
InBlock.gif             clearOptions(colls);
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
for(var i=0;i<OPTONLENGTH;i++)dot.gif{
InBlock.gif             
InBlock.gif            random 
= Math.floor(Math.random()*9000)+1000;
InBlock.gif            item 
= new Option(random,random);    //通过Option()构造函数创建option对象        
InBlock.gif
            selectTag.options.add(item); //添加到options集合中
ExpandedSubBlockEnd.gif
        }
    
InBlock.gif        
InBlock.gif        watchState();
ExpandedBlockEnd.gif    }

None.gif    
//添加新option项前是否清空当前options
ExpandedBlockStart.gifContractedBlock.gif
    function isClearOption()dot.gif{
InBlock.gif        
return document.getElementById("chkClear").checked;
ExpandedBlockEnd.gif    }

None.gif    
//清空options集合
ExpandedBlockStart.gifContractedBlock.gif
    function clearOptions(colls)dot.gif{
InBlock.gif        
var length = colls.length;
ExpandedSubBlockStart.gifContractedSubBlock.gif        
for(var i=length-1;i>=0;i--)dot.gif{
InBlock.gif            colls.remove(i);
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

None.gif    
//添加一项新option
ExpandedBlockStart.gifContractedBlock.gif
    function addOption()dot.gif{
InBlock.gif        colls.add(createOption());
InBlock.gif        lastOptionOnFocus(colls.length
-1);
InBlock.gif        watchState();
ExpandedBlockEnd.gif    }

None.gif    
//创建一个option对象
ExpandedBlockStart.gifContractedBlock.gif
    function createOption()dot.gif{
InBlock.gif        
var random = Math.floor(Math.random()*9000)+1000;
InBlock.gif        
return new Option(random,random);
ExpandedBlockEnd.gif    }

None.gif    
//删除options集合中指定的一项option
ExpandedBlockStart.gifContractedBlock.gif
    function removeOption(index)dot.gif{        
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if(index >= 0)dot.gif{
InBlock.gif            colls.remove(index);
InBlock.gif            lastOptionOnFocus(colls.length
-1);
ExpandedSubBlockEnd.gif        }

InBlock.gif        watchState();
ExpandedBlockEnd.gif    }

None.gif    
//获取当前选定的option索引
ExpandedBlockStart.gifContractedBlock.gif
    function getSelectedIndex()dot.gif{
InBlock.gif        
return selectTag.selectedIndex;
ExpandedBlockEnd.gif    }

None.gif    
//获取options集合的总数
ExpandedBlockStart.gifContractedBlock.gif
    function getOptionLength()dot.gif{
InBlock.gif        
return colls.length;
ExpandedBlockEnd.gif    }

None.gif    
//获取当前选定的option文本
ExpandedBlockStart.gifContractedBlock.gif
    function getCurrentOptionValue(index)dot.gif{
InBlock.gif        
if(index >= 0)
InBlock.gif            
return colls(index).value;
ExpandedBlockEnd.gif    }

None.gif    
//获取当前选定的option值
ExpandedBlockStart.gifContractedBlock.gif
    function getCurrentOptionText(index)dot.gif{
InBlock.gif        
if(index >= 0)
InBlock.gif            
return colls(index).text;
ExpandedBlockEnd.gif    }

None.gif    
//使用options集合中最后一项获取焦点
ExpandedBlockStart.gifContractedBlock.gif
    function lastOptionOnFocus(index)dot.gif{
InBlock.gif        selectTag.selectedIndex 
= index;
ExpandedBlockEnd.gif    }

None.gif    
//显示当select标记状态
ExpandedBlockStart.gifContractedBlock.gif
    function watchState()dot.gif{
InBlock.gif        
var divWatch = document.getElementById("divWatch");
InBlock.gif        
var innerHtml="";
InBlock.gif        innerHtml  
= "option总数:" + getOptionLength();
InBlock.gif        innerHtml 
+= "<br/>当前项索引:" + getSelectedIndex();
InBlock.gif        innerHtml 
+= "<br/>当前项文本:" + getCurrentOptionText(getSelectedIndex());
InBlock.gif        innerHtml 
+= "<br/>当前项值:" + getCurrentOptionValue(getSelectedIndex());
InBlock.gif        divWatch.innerHTML 
= innerHtml;
InBlock.gif        divWatch.align 
= "justify";
ExpandedBlockEnd.gif    }

None.gif

注意到上面创建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; //选中项的值

None.gif<BODY>
None.gif  
<Select name="SelectBox">
None.gif  
</Select>
None.gif  
<hr/>
None.gif    
<div id="divWatch" style="background-color:beige;width=220;">
None.gif    
</div>    
None.gif  
<hr/>
None.gif  
<h4>使用随机数初始化SelectBox</h4>
None.gif  
<input type="button" value="Init" onclick="initSelectBox()"/> <input type="checkbox" name="chkClear"/>clear
None.gif  
<hr/>
None.gif  
<h4>添加option项</h4>
None.gif  
<input type="button" value="create" onclick="addOption()"/>
None.gif  
<hr/>
None.gif  
<h4>删除option项</h4>
None.gif  
<input type="button" value="delete" onclick="removeOption(colls.length-1)"/>
None.gif 
</BODY>

转载于:https://www.cnblogs.com/xuxu1390/archive/2008/08/05/1260763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值