javascript: getElementById-problem im IE
Ich versuche Anhängen klicken Sie auf Ereignis, um eine check-box mit JavaScript. Unten sehen Sie die HTML-und JS.
<!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>
Das problem ist, dass in IE, das click-Ereignis nicht ausgelöst wird. Ich verengt das problem Lage. Das Problem ist, dass es einen versteckten Eingang, kurz bevor Sie das Kontrollkästchen, und diese beiden Elemente haben den gleichen Namen. Ich bin mir nicht sicher, warum dies ist ein problem verursacht(schließlich bin ich mit getElementById und das hidden-element nicht auch eine id haben).
Gibt es einen gültigen Grund für diese Art von Verhalten (nur IE. Funktioniert einwandfrei in Firefox...wie immer 🙁 )? Auch gibt es eine gute Abhilfe (könnte ich mir Dokument.getElementsByName('caution_c')[1] aber ich will nicht...)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Internet Explorer wird verwirrt über
name
undid
- es wird dringend empfohlen, die Behandlung dieser beiden Attribute, als ob Sie waren die gleichen.Kann man es entweder durch 1) stellen Sie sicher, dass es keine id/name Konflikte in Ihrem Dokument, oder 2) override IE s native getElementById-Methode.
Lesen Sie hier mehr darüber.
Versuchen Sie es mit einem anderen Ereignis wie
onchange
oderonfocus
um zu sehen, ob das löst es. Auch ich glaube nicht, dassonclick
wird ausgelöst, wenn der Benutzer mit der Tabulatortaste auf die checkbox, die kann oder nicht sein, wie Sie beabsichtigen, es zu arbeiten.Ich bin damit einverstanden, IE ist schlecht in die Dinge zu verstehen, auf html-Ebene.
Ich würde eher den link zum button anstatt mit Anker-Elemente, da der IE Probleme auf Anker-Ebene mit
document.getElementById()
. Versuchen, die gleiche Taste und für andere Benutzer.