2010-09-14 32 views
7
içinde 0EventById sorunu

JavaScript kullanarak bir onay kutusuna bir tıklama olayı iliştirmeye çalışıyorum. Aşağıda HTML ve JS gösterilmektedir.javascript: 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> 

Sorun, IE'de, click olayı tetiklenmiyor. Problem yerini daralttım. Sorun, onay kutusundan hemen önce gizli bir giriş olması ve her iki öğenin de aynı ada sahip olmasıdır. Bunun bir soruna neden neden olduğundan emin değilim (sonuçta getElementById kullanıyorum ve gizli öğenin bir kimliği bile yok).

Bu davranış türü için geçerli bir neden var mı (Yalnızca IE. Firefox'ta iyi çalışıyor ... her zamanki gibi :() Ayrıca iyi bir geçici çözüm var (sadece document.getElementsByName ('caution_c ') [1] ama

cevap

13

Internet Explorer name ve id üzerinde karışır) ... istemiyorum -. önemle aynı sanki bu iki sıfatı tedavi önerilir

Ya da 1) tarafından belgenizde kimlik/isim çakışmaları olmadığından emin olun, veya 2) override IE's native getElementById-method.

Read more about it here.

+4

wow ... bu sadece deli! –

+0

@Guarav: IE'ye hoş geldiniz. – annakata

+1

@Guarav - insane? Evet. Bu senin için IE. Neden bu kadar çok web geliştiricisinin microsoft'dan çok yoğun bir şekilde nefret ettiğini düşünüyorsun. Bu aksaklık buzdağının sadece görünen kısmıdır. :(Umarım yeni IE sürüm 9 şeyleri geliştirir, ancak tüm IE'nin bu eski sürümlerini desteklememizi engeller. – Spudley

1

Bu sorunun çözüp çözmediğini görmek için onchange veya onfocus gibi farklı bir etkinlik kullanmayı deneyin. Ayrıca, bir kullanıcı onay kutusunu tıklatırsa, çalışmayı planladığınız gibi olmasa da onclick'un işten çıkarılacağını düşünmüyorum.

-1

Katılıyorum, IE, html düzeyindeki şeyleri anlamakta yetersiz. IE, anchor düzeyinde document.getElementById() ile sorun yaşıyormuş gibi, bağlantı elemanlarını kullanmak yerine bağlantıyı düğmeye eklemeyi tercih ediyorum. Düğmede aynı şeyi deneyin ve diğer kullanıcılar için çalışacaktır.