javascript: проблема getElementById в IE
Я пытаюсь прикрепить событие click к флажку с помощью JavaScript. Ниже показаны HTML и 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>
проблема в том, что в IE, событие click не срабатывает. Я сузил область поиска проблем. Проблема в том, что есть скрытый вход непосредственно перед флажком, и оба этих элемента имеют одинаковое имя. Я не уверен, почему это вызывает проблему(в конце концов, я использую getElementById, а скрытый элемент даже не имеет идентификатор.)
есть ли действительная причина для этого типа поведения (т. е. только. Отлично работает в Firefox...как всегда :( )? Кроме того, есть ли хороший обходной путь (я мог бы просто сделать документ.getElementsByName('caution_c')[1] но я не хочу...)
3 ответов
Internet Explorer запутывается name
и id
- настоятельно рекомендуется рассматривать эти два атрибута, как если бы они были одинаковыми.
вы можете исправить это либо 1) Убедитесь, что в вашем документе нет конфликтов идентификаторов / имен, либо 2) переопределить собственный getElementById-метод IE.
попробуйте использовать другое событие, такое как onchange
или onfocus
чтобы увидеть, если это решает он. Также я не думаю onclick
будет запущен, если пользователь вкладок на флажок, который может или не так, как вы собираетесь работать.
Я согласен, IE плохо понимает вещи на уровне html. Я бы предпочел добавить ссылку на кнопку, а не использовать якорные элементы, поскольку IE испытывает проблемы на уровне якоря с документом.getElementById (). Попробовать же на кнопку и будет работать для других пользователей.