[转]巧用sel.options[sel.selectedIndex].text与try{}catch{e}{}操作SELECT选项值

本文介绍了一种利用异常处理机制检查Select组件中是否存在特定值的方法,相较于传统循环比对方式,这种方法更加高效。通过示例代码演示了如何通过提示用户输入值,检查Select组件中是否存在该值,并在不存在时进行提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当select.value=value被赋予一个不存在的值时如果在这个时候用sel.options[sel.selectedIndex].text来获取当前选择文本会抛出异常。本文主要思想就是catch抛出的异常来断定select中不存在此value的选项,感觉这样做比循环获取每个option的value与新的value值比对是否相等更有效率,废话不多说,上菜!

<html>  
<head>  
<title>JS</title>  
<script type="text/javascript">  
function $(id)   
{   
    return document.getElementById(id);   
}   
  
String.prototype.trim=function()   
{   
    return this.replace(/(^\s*)|(\s*$)/g,"");   
}   
function init()   
{   
    var originalSel = $("originalSel");    
    originalSel.options[0]=new Option("text1","1");   
    originalSel.options[1]=new Option("text2","2");   
    originalSel.options[2]=new Option("text3","3");   
    originalSel.options[3]=new Option("text4","4");   
    originalSel.options[4]=new Option("text5","5");   
}   
  
function alertText(){   
    var value = prompt('请您输入value值','');   
    if(value==null||value.trim()=="")   
    {   
        return;   
    }   
  
    var originalSel = $("originalSel");   
    originalSel.value=value;   
    try{   
        var text = originalSel.options[originalSel.selectedIndex].text;   
        alert("value="+value+"对应的text是"+text);   
    }catch(e){   
        if(originalSel.options[0])   
        {   
            originalSel.options[0].selected=true;   
        }   
        alert("您输入的value不存在!");   
    }      
}   
  
function add()   
{   
    var textValue = prompt("请你输入Text,Value","text,value");   
    if(textValue==null)   
    {   
        alert("请您输入text,value!");   
        return;   
    }   
    var ary = textValue.split(",");   
    if(ary.length<2||ary[0].trim()==""||ary[1].trim()=="")   
    {   
        alert("key,value值不能为空!");   
        return;   
    }   
    var text = ary[0];   
    var value = ary[1];   
    var selObj = $("originalSel");   
    selObj.value=value;   
    try{   
        selObj.options[selObj.selectedIndex].text;   
        alert("select中已存在value为"+value+"的选项!");   
        return;   
    }catch(e){         
        selObj.options[selObj.options.length]=new Option(text,value);   
        selObj.value=value;   
        alert("增加成功!");   
    }   
}   
  
function remove(){   
    var value = prompt('请您输入value值','');   
    if(value==null||value.trim()=="")   
    {   
        return;   
    }   
    var originalSel = $("originalSel");   
    originalSel.value=value;   
    try{   
        originalSel.options[originalSel.selectedIndex].text;   
        originalSel.remove(originalSel.selectedIndex);   
        alert("删除成功!");   
    }catch(e){   
        if(originalSel.options[0])   
        {   
            originalSel.options[0].selected=true;   
        }   
        alert("select中不存在value="+value+"的选项!");   
    }   
}   
</script>  
  
</head>  
<body onload="init()">  
<select id="originalSel" style="width:150px">  
</select>  
<br>  
<input type="button" onclick="alertText()" value="alertText">  
<input type="button" onclick="add()" value="addOption">  
<input type="button" onclick="remove()" value="removeOption">  
</body>  
</html>  

 

 

原帖地址:http://ilovejsj.iteye.com/blog/466259

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值