2009-09-21 104 views
5

上選擇選項使用onmouseover事件更新代碼:不能在IE

function getElements() 
    { 
    var x=document.getElementsByTagName("option"); 

var el = document.getElementById('selectDept'); 
el.onmouseover = function(myevent) { 
    // event = event || window.event.srcElement; 
if(myevent && myevent.target){ 
    if (myevent.target.tagName.toLowerCase() == 'option') { 
     alert(myevent.target.innerHTML); 
    } 
} 
else if(window.event) 
{ 
    if (window.event.srcElement.tagName.toLowerCase() != 'select') { 
     alert('s'); 
    } 

} 
}; 

但仍然無法在IE瀏覽器。

回答

3

難道你還不能在整個select中設置一個mouseover事件處理程序,並且如果目標是一個選項元素,則將其作爲目標事件屬性,執行X操作?

var el = document.getElementById('foo') 
el.onmouseover = function(event) { 
    event = event || window.event; 
    var target = event.target ? event.target : event.srcElement; 
    if (target.nodeName.toLowerCase() === 'option') { 
     alert('option'); 
    } 
} 

更新代碼:

http://jsbin.com/olusi

+0

你有示例代碼?我試過了,但沒有工作 – MemoryLeak 2009-09-21 00:14:45

+0

更新了僞代碼示例,我只是在後面輸入了它,我沒有真正地測試過這個,你可能需要考慮使用stopPropagation冒泡等等,但是,讓我知道它是怎麼回事 – 2009-09-21 00:25:08

+0

我認爲你需要在IE中的event.srcElement來獲取哪個元素觸發事件。http://msdn.microsoft.com/en-us/library/ms534638%28VS.85%29.aspx – scunliffe 2009-09-21 00:30:55

6

IE不支持選項元素上的事件。您可以嘗試@meder說,在父級選擇上添加一個處理程序,然後檢查該事件以查看哪個選項被蒙上了陰影。

PS這些都是已知的bug在IE6(和IE7和IE8 beta測試報告 - 並且拒絕了固定日期):-(

也許IE9將支持他們

+0

IE9顯然不支持它們!至少不在1到16的β – Kyle 2011-01-16 20:46:49