2013-05-27 27 views
0

我正在開發一個用例,在用戶檢查/取消選中複選框後需要執行一些操作。IE -7/8,事件目標不起作用

例子:

功能片段:

<script> 
function toggleAgreement(event) { 
if(event.target == 'some pre-defined ID') { 
//do action; 
} 
</script> 

問題:

此功能在Firefox/Chrome瀏覽器工作良好,即使在IE9它的工作。就在IE-7/8中,它不起作用。

在觀察IE腳本控制檯時,這些錯誤顯示在 - > bodyOnload(不是當我觸發這個特定的複選框時)。

「對象不支持屬性或方法 'querySelectorAll'」 Iframe.html的,行x標記Y

當點擊這個鏈接,我能看到這一點:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML><HEAD> 
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD> 
<BODY></BODY></HTML> 

我研究發現應該使用jquery的方式是: "document.querySelectorAll('.className')"

事情是,即使這個問題在IE9中佔上風,爲什麼不拋出上述錯誤?

+0

http://www.quirksmode.org/js/events_properties.html#target – CBroe

回答

0

event.target與IE不兼容。試試這個(它是跨瀏覽器兼容):

<script> 
    function toggleAgreement(event) { 
     var evt = e || window.event; // this assigns evt with the event object 
     var current = evt.target || evt.srcElement; // this assigns current with the event target 
     if(current == 'some pre-defined ID') { 
      //do action; 
     } 
    } 
</script> 
+0

工作就像魅力,謝謝:) –

0

您是否允許使用jQuery?它使得事件的處理變得更加容易(對於早期的IE版本支持,必須採取1.x版本)。用jQuery是那麼容易,因爲:

$("#myCheckbox").click(function() { 
    if ($(this).is(":checked")) { 
    // Do whatever you want 
    } 
}); 

沒有必要使用「活動對象」了,被點擊複選框在提供的「$(本)」對象中可用。但如果你需要的話,它是available