Re: [討論] removeAttr, selected, IE bug?

看板Ajax作者時間16年前 (2009/05/23 18:17), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串2/3 (看更多)
不知道單純移除 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

05/23 18:29, , 1F
這也是個辦法 我再試試看
05/23 18:29, 1F

05/23 18:58, , 2F
此法可解^^
05/23 18:58, 2F

05/23 19:03, , 3F
剛寫了個 test sample , 改option效果在 ie6 可行 :p
05/23 19:03, 3F

05/23 19:03, , 4F
跟改 selectedIndex 是一樣的效果.
05/23 19:03, 4F
文章代碼(AID): #1A5yqfl6 (Ajax)
文章代碼(AID): #1A5yqfl6 (Ajax)