作者chweng ()
看板Ajax
标题Re: [讨论] removeAttr, selected, IE bug?
时间Sat May 23 18:17:10 2009
不知道单纯移除 selected 的目的为何呢?换个说法,移除之後没有打算指定另外一个
项目吗?如果不执着一定要移除那个标签,而单纯只是想藉由事件的触发来改变选择的
项目的话,下面这个范例也许可以给你参考看看。简单说,就是直接指定另外一个
option 的 selected 属性值为 true,那麽原本被选中项目的 seleceted 值就会由
true 变成 false;而新设定的项目就由 false 变成 true 了。
以下范例在 Firefox、IE8 以及 Chrome 测试无误,至於 IE6,我之前记得是也可以正
常动作,但不知道记忆有没有错误就是。
<!-- 以下<del>饭粒</del>范例请黏贴到<del>嘴角</del> html 档做测试 -->
<select id="dpmenu">
<option value="one">我是第一项</option>
<option value="two" selected="selected">我是原本预设的第二项</option>
</select>
<button onclick="alert(
'第一项的 selected 属性值:' + thisMenu.options[0].selected +
'\r第二项的 selected 属性值:' + thisMenu.options[1].selected +
'\r目前选中项目的 value:' + thisMenu.options[thisMenu.selectedIndex].value
)">告诉我选单状态</button>
<p id="message">再过 <span id="countdown">5</span> 秒後,选择项会改变喔!</p>
<script type="text/javascript">
var seconds = 5;
var thisMenu = document.getElementById('dpmenu');
var countdown = function () {
--seconds;
if (seconds === 0) {
thisMenu.options[0].selected = true; // 关键在此
document.getElementById('message').style.display = 'none';
} else {
setTimeout(countdown, 1000);
document.getElementById('countdown').innerHTML = String(seconds);
}
}
setTimeout(countdown, 1000);
</script>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.225.196.22
1F:→ tomin:这也是个办法 我再试试看 05/23 18:29
2F:推 tomin:此法可解^^ 05/23 18:58
3F:→ TonyQ:刚写了个 test sample , 改option效果在 ie6 可行 :p 05/23 19:03
4F:→ TonyQ:跟改 selectedIndex 是一样的效果. 05/23 19:03