在给gt grid编写editor时发现的 safari 版本 3.0.4
这个bug 简单点说就是,
当select下的所有option的 selected属性都是 false时,
大多数浏览器 都会将 选项指向上次选择的项,而safari会生造出一个空的option来,
而且这种情况不是总发生, 什么时候发生 什么时候不发生不好说 看后面的代码注释吧
演示文件见附件
这个bug 简单点说就是,
当select下的所有option的 selected属性都是 false时,
大多数浏览器 都会将 选项指向上次选择的项,而safari会生造出一个空的option来,
而且这种情况不是总发生, 什么时候发生 什么时候不发生不好说 看后面的代码注释吧
演示文件见附件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function init(selectObj) {
// 对于s1 safari的做法和其他浏览器一致, 都是默认选中第一个
selectObj=document.getElementById('s1');
for (var i=0; i<selectObj.options.length; i++) {
selectObj.options[i].selected=false;
}
// 对于s2 safari的做法就出现问题了, 会生造出一个
selectObj=document.getElementById('s2');
for (var i=0; i<selectObj.options.length; i++) {
selectObj.options[i].selected=false;
}
alert(selectObj.value) // 注意这个alert.
// 对于s3 safari的做法本来应该和 s2 一样 但是由于多了一个上面的alert, 一切又不同额 FT!!!!
// 如果你把上面的 alert 注释了 那么 s3 和 s2 完全一样
selectObj=document.getElementById('s3');
for (var i=0; i<selectObj.options.length; i++) {
selectObj.options[i].selected=false;
}
}
</script>
</head>
<body onload="init();">
<select id="s1">
<option value="1" selected="selected" >aaaa</option>
<option value="2">bbb</option>
<option value="3">ccc</option>
</select>
<br/><br/>
<select id="s2">
<option value="11" >zzz</option>
<option value="22">xxxx</option>
<option value="33">ccc</option>
</select>
<br/><br/>
<select id="s3">
<option value="111" >bbb</option>
<option value="222">nnn</option>
<option value="333">mmm</option>
</select>
</body>
</html>