求html.option.style.display IE的解决办法
登录 | 论坛导航 -> 华新鲜事 -> 求学狮城 | 本帖共有 5 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:icky (等级:15 - 最接近神,发帖:7923) 发表:2008-06-17 13:34:36  楼主  关注此帖评分:
求html.option.style.display IE的解决办法
最近发现如果在option下用style.display的时候,在firefox下正常,但是在IE下就不正常。
请看
click
在firefox下,点击下面的show/hide,下拉菜单会相应的变化,在IE下则不会。
请问达人,在IE下要怎么做才有跟firefox一样的效果?
This page is intentionally left blank
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:icky (等级:15 - 最接近神,发帖:7923) 发表:2008-06-17 13:35:01  2楼
原code如下
<html>
<head>
<script type="text/javascript">
function show_hide(id) {
if (document.getElementById(id).style.display == 'block')
document.getElementById(id).style.display = 'none';
else if (document.getElementById(id).style.display == 'none')
document.getElementById(id).style.display = 'block';
document.getElementById('opt').value = 0;
}
</script>
</head>
<body>
<div style="height: 100px"></div>
<form>
<select id="opt" name="option">
<option id="opt0" value=0 style="display: block">default</option>
<option id="opt1" value=1 style="display: block">first option</option>
<option id="opt2" value=2 style="display: block">second option</option>
<option id="opt3" value=3 style="display: block">third option</option>
<option id="opt4" value=4 style="display: block">fourth option</option>
</select>
</form>
<table>
<tr><td>
<a onclick="show_hide('opt1')">show/hide first option</a>
</td></tr><tr><td>
<a onclick="show_hide('opt2')">show/hide second option</a>
</td></tr><tr><td>
<a onclick="show_hide('opt3')">show/hide third option</a>
</td></tr><tr><td>
<a onclick="show_hide('opt4')">show/hide fourth option</a>
</td></tr>
</table>
<div style="height: 800px"></div>
</body>
</html>
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:大树下 (等级:3 - 略知一二,发帖:26) 发表:2008-06-17 15:21:25  3楼 评分:
原code如下 function show_hide(id) { if (document.getElementById(id).style.display == 'block') document.getElementById(id).style.display = 'none'; else if (document.getElementById(id).style.display == 'none') document.getElementById(id).style.display = 'block'; document.getElementById('opt').value = 0; } default first option second option third option fourth option show/hide first option show/hide second option show/hide third option show/hide fourth option (more...)
这是IE的一个bug, 有几个workaround的方法
你可以maintain几个array,然后每次都重建所有options或者用add/remove来动态添加/删除受影响的option:

<html>
<head>
<script type="text/javascript">
function show_hide(id, text) {
var op = document.getElementById(id);
var select = document.getElementById("opt");

if (op) {
select.remove(op.index);
return;
}

for (var i=0; i<select.length; i++) {
if (select.options[i].id > id) break;
}

op = document.createElement('option');
op.text=text;
op.id = id;

try {
select.add(op, select.options[i]); // firefox
}
catch (ex) {
select.add(op, i); // ie
}
}
</script>
</head>
<body>
<div style="height: 100px"></div>
<form>
<select id="opt" name="option">
<option id="opt0" value=0 style="display: block">default</option>
<option id="opt1" value=1 style="display: block">first option</option>
<option id="opt2" value=2 style="display: block">second option</option>
<option id="opt3" value=3 style="display: block">third option</option>
<option id="opt4" value=4 style="display: block">fourth option</option>
</select>
</form>
<table>
<tr><td>
<a onclick="show_hide('opt1', 'first option')">show/hide first option</a>
</td></tr><tr><td>
<a onclick="show_hide('opt2', 'second option')">show/hide second option</a>
</td></tr><tr><td>
<a onclick="show_hide('opt3', 'third option')">show/hide third option</a>
</td></tr><tr><td>
<a onclick="show_hide('opt4', 'fourth option')">show/hide fourth option</a>
</td></tr>
</table>
<div style="height: 800px"></div>
</body>
</html>
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:moon9shine (等级:2 - 初出茅庐,发帖:54) 发表:2008-06-17 16:41:32  4楼 评分:
原code如下 function show_hide(id) { if (document.getElementById(id).style.display == 'block') document.getElementById(id).style.display = 'none'; else if (document.getElementById(id).style.display == 'none') document.getElementById(id).style.display = 'block'; document.getElementById('opt').value = 0; } default first option second option third option fourth option show/hide first option show/hide second option show/hide third option show/hide fourth option (more...)
建议用JS的framework, JQuery, Prototype 都不错

欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:icky (等级:15 - 最接近神,发帖:7923) 发表:2008-06-17 17:31:52  5楼
这是IE的一个bug, 有几个workaround的方法你可以maintain几个array,然后每次都重建所有options或者用add/remove来动态添加/删除受影响的option: function show_hide(id, text) { var op = document.getElementById(id); var select = document.getElementById("opt"); if (op) { select.remove(op.index); return; } for (var i=0; i id) break; } op = document.createElement('option'); op.text=text; op.id = id; try { select.add(op, select.options[i]); // firefox } catch (ex) { select.add(op, i); // ie } } default first option second option third option fourth option show/hide first option show/hide second option show/hide third option show/hide fourth option (more...)
阁下真乃神人也
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
论坛导航 -> 华新鲜事 -> 求学狮城 | 返回上一页 | 本主题共有 5 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码