2010-09-14 38 views
7

我正在嘗試使用JavaScript將單擊事件附加到複選框。下面顯示的是HTML和JS。javascript:getElementById在IE中的問題

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
     <input type="hidden" name="caution_c" value="0"> 
     <input type="checkbox" id="caution_c" name="caution_c" value="1" tabindex="120"> 
     <script type="text/javascript"> 
      var cb = document.getElementById('caution_c'); 
      cb.onclick = function() { 
       alert(1); 
      } 
     </script> 
    </body> 
</html> 

問題是,在IE中,點擊事件不會觸發。我已經縮小了問題的位置。問題是在複選框之前有一個隱藏的輸入,並且這兩個元素具有相同的名稱。我不知道爲什麼這會導致問題(畢竟,我使用getElementById,隱藏的元素甚至沒有ID)。

是否有這種類型的行爲的有效原因(IE瀏覽器。在Firefox中正常工作...一如既往:()還有一個很好的解決方法(我可以做document.getElementsByName('caution_c 「)[1]但我不想...)

回答

13

的Internet Explorer迷糊了nameid - 強烈推薦,好像他們是相同的對待這兩個屬性

您可以通過以下方式解決問題:1)確保文檔中沒有ID /名稱衝突,或者2)override IE's native getElementById-method

Read more about it here

+4

哇......這只是瘋了! – 2010-09-14 11:32:18

+0

@Guarav:歡迎來到IE。 – annakata 2010-09-14 11:34:33

+1

@Guarav - 瘋狂?是的。這是你的IE瀏覽器。你爲什麼認爲如此之多的Web開發人員如此強烈地憎恨微軟?這個小故障只是冰山一角。 :(希望新的IE版本9將會改進一些東西,但它不會讓我們都不必支持那些易碎的舊版本的IE。 – Spudley 2010-09-14 11:37:13

1

嘗試使用不同的事件,如onchangeonfocus以查看是否解決該問題。另外我不認爲onclick將被解僱,如果用戶選中複選框,這可能或不是你打算如何工作。

-1

我同意,IE瀏覽器在html層面上對事物的理解很差。 我寧願將鏈接添加到按鈕,而不是使用錨點元素,因爲IE在document.getElementById()錨點級別遇到問題。在按鈕上嘗試相同的方法,並且可以爲其他用戶使用