小东西,留起来,以后用:
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判断也都可以省了,挺不错。。。。