IE下不支持option的onclick事件

<select>
  <option onclick="test('www.hao123.com')"value="www.hao123.com">hao123</option> 
  <option on click="test('www.baidu.com')" value="www.baidu.com">baidu</option>
  <option on click="test('www.google.com')" value="www.google.com">google</option>
</select>

<script type="text/javas cript">
  function test(s){
    window.open(s);
  }
</script>

這些代碼在Firefox下能正常運行;在IE下不能運行,且沒有報錯.java

最後發現了問題所在:在IE裏,select的option是不支持onclick事件的,而在Firefox和 OPERA 裏, option 是支持onclick事件的。
那麼應該怎麼實現原設定的功能?用Select元素的onchange事件。這時主要是考慮如何得到被選中的選項所表明的連接。
修改後代碼以下:google

<select id="friendLink" on change="test()> 
  <option value=
"www.hao123.com">hao123</option>
  <option value=
"www.baidu.com">baidu</option>
  <option value=
"www.google.com">google</option>
</select>

<script type=
"text/javas cript">
  function test(){
    var targetSlect=document.getElementById(
"friendLink");
    var targetHref=targetSlect.options[targetSlect.selectedIndex].value;
    window.open(targetHref);
  }
</script>

雖然onchange在某些時刻能夠代替 option的click事件, 可是二者並沒有法作到徹底等價. 由於onchange只有在 你點擊的option和以前的option不一樣時纔會觸發. 當select當前選中的是第一項 而你再次點擊第一項時, select是不會被觸發的. 下面的代碼演示了一種間接實現 option onclick的方法 注意:此方案只適用於下拉方式的單選select.spa

相關文章
相關標籤/搜索