IE不支持option的display样式,只能使用remove和add
作者:bea
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="yue-Hans" lang="yue-Hans"> <head> <meta ht
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="yue-Hans" lang="yue-Hans">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>it works..............</title>
</head>
<body>
<form action="./" method="get">
<dl>
<dt>发布者</dt>
<dd>
<select name="q_role" onchange="role_change_type();">
<option value="company">中介</option>
<option value="person">个人</option>
</select>
<select name="q_type">
<option value="sale">出售</option>
<option value="lease">出租</option>
<option value="buy" style="display:none">求购</option>
<option value="hire" style="display:none">求租</option>
</select>
</dd>
</dl>
</form>
</body>
</html>
[Ctrl+A 全选 注:
如需引入外部Js需刷新才能执行]
想实现一个很简单的功能:当选中“中介”时,不显示“求购”与“求租”。本以为通过display:none即可实现,结果发现在option元素上使用display:none在firefox中有效,在IE6、IE7、IE8中都无效。
所以,通过javascript设置display:none也是在IE中无效,代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="yue-Hans" lang="yue-Hans">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>it works..............</title>
</head>
<body>
<form action="./" method="get">
<dl>
<dt>发布者</dt>
<dd>
<select name="q_role" onchange="role_change_type();">
<option value="company">中介</option>
<option value="person">个人</option>
</select>
<select name="q_type">
<option value="sale">出售</option>
<option value="lease">出租</option>
<option value="buy">求购</option>
<option value="hire">求租</option>
</select>
</dd>
</dl>
<script type="text/javascript">
function role_change_type()
{
var q_role=document.getElementsByName("q_role");
var q_type=document.getElementsByName("q_type");
var q_type_option=q_type[0].getElementsByTagName("option");
if(q_role[0].value=='company')
{
if(q_type[0].value=='buy'||q_type[0].value=='hire')
{
q_type[0].value='sale';
}
for(var i=0;i!=q_type_option.length;i++)
{
if(q_type_option[i].value=="buy"||q_type_option[i].value=="hire")
{
q_type_option[i].style.display="none";
}
}
}
if(q_role[0].value=='person')
{
for(var i=0;i!=q_type_option.length;i++)
{
q_type_option[i].style.display="";
}
}
}
role_change_type();
</script>
</form>
</body>
</html>
[Ctrl+A 全选 注:
如需引入外部Js需刷新才能执行]
所以,只能通过select元素的remove和add方法,当选中“中介” 时,把“求租”和“求购”删除。代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="yue-Hans" lang="yue-Hans">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>it works..............</title>
</head>
<body>
<form action="./" method="get">
<dl>
<dt>发布者</dt>
<dd>
<select name="q_role" onchange="role_change_type();">
<option value="company">中介</option>
<option value="person">个人</option>
</select>
<select name="q_type">
<option value="sale">出售</option>
<option value="lease">出租</option>
<option value="buy">求购</option>
<option value="hire">求租</option>
</select>
</dd>
</dl>
<script type="text/javascript">
var q_role=document.getElementsByName("q_role");
var q_type=document.getElementsByName("q_type");
var q_type_option=q_type[0].getElementsByTagName("option");
alert(q_role[0].value)
if(q_role[0].value=='company')
{
q_type[0].remove(3)
q_type[0].remove(2)
}
function role_change_type()
{
if(q_role[0].value=='company')
{
q_type[0].remove(3)
q_type[0].remove(2)
}
if(q_role[0].value=='person')
{
var x=document.createElement('option');
x.text='求购';
x.value='buy';
var y=document.createElement('option');
y.text='求租';
y.value='hire';
try
{
q_type[0].add(x,null);
q_type[0].add(y,null); // standards compliant
}
catch(ex)
{
q_type[0].add(x);
q_type[0].add(y); // IE only
}
}
}
</script>
</form>
</body>
</html>
[Ctrl+A 全选 注:
如需引入外部Js需刷新才能执行]
这样在IE和firefox中都有效了。真费解啊,IE8竟然还不支持option的display:none 。
上面的代码还有一个问题:在IE7和IE8中 选中“个人”,然后刷新,将导致“求租”和“求购”被删除。在IE6和firefox3.5.5中正常。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- textbox 在光标位置插入字符功能的js实现(兼容ie,firefox)
- Javascript 中介者模式实例
- js textarea自动增高并隐藏滚动条
- jquery 简单的图片展示效果
- javascript 动态设置已知select的option的value值的代码
- javascript获取元素文本内容的通用函数
- javascript 语法基础 想学习js的朋友可以看看
- javascript 倒计时代码
- JavaScript 解析Json字符串的性能比较分析代码
- TextArea 控件的最大长度问题(js json)
- 比较详细的关于javascript 解析json的代码
- JQuery读取XML文件数据并显示的实现代码
- js实现页面打印功能实例代码(附去页眉页脚功能代码)
- 利用图片的 onerror 事件载入默认图片
- jQuery 渐变下拉菜单
- javascript实现的仿51job地址多项选择方式效果
- javascript 日期联动选择器 [其中的一些代码值得学习]
- js checkbox全选并将获取值放到input里边
- 多浏览器兼容的获取元素和鼠标的位置的js代码