js来控制下拉框的显示值

小东西,留起来,以后用:

document.getElementById("DeviceType").options[0].selected = true;

我用这个挺好的,有人说不好用,他用的是:

setTimeout(function(){ obj.options[i].selected = true; }, 1);

今天我发现其中的奥秘了。。。。。因为我在做联动时,遇到了这一情况:

try {
$.ajax({
url : "getdevicelist.jsp",
type : "post",
data : "DeviceType=" + iValue,
dataType : "html",
error : function() {
},
success : function(msg) {
$("#DeviceName").empty();
msg = $.trim(msg);
if (msg != "") {
$(msg).appendTo("#DeviceName"); // 添加下拉框的option

//alert(document.getElementById("DeviceName").options[1].text);

//这段代码用来将原来的内容在下拉框中显示出来。。。后来发现会报错。网上说在IE6下会报错。

if(document.getElementById("DeviceName").options.length > 0)
{
for(var i=0;i<document.getElementById("DeviceName").options.length;i++){
if(document.getElementById("DeviceName").options[i].text == m_szDeviceName){
document.getElementById("DeviceName").options[i].selected = true;
}
}
}

//alert(document.getElementById("DeviceName").options[1].text);
}

},
complete : function() {
// CompleteLogUser();
}
});
} catch (err) {
// alert(err.description);
}

报的错误:无法设置selected属性,未指明的错误。

原因:下拉框中的option是动态创建的。刚创建好,马上进行调用,就会出现这种问题。

解决办法为:在设置selected时,加个时间延长。

看到他们说用:

obj.options[i].selected = true 就能解决,我用不行,会报找不到对象的错误。

有人说用:$("#DeviceName option").selected = true;这个不会报错,但显示的是第一条数据,不是我想要的符合条件的。。

最后终于找到了一个可用的方法:

$("#DeviceName option[value='"+ m_szDeviceName+"']").attr("selected",true);

这样,把for循环和if判断也都可以省了,挺不错。。。。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值