Код для Pro Javascript не работает

0

Я не думаю, что здесь не будет правильного слова. Я не могу заставить его работать.

Это очень простой кусок кода. Если я просто набираю alert("Working"); он работает нормально.

В любом случае, вот весь код, и, может быть, вы, ребята, можете помочь мне понять, что я делаю неправильно.

<!DOCTYPE html>
<html>
<head>
    <title>Events</title>
</head>
<body>
<script type="text/javascript">
    var btn = document.getElementById("btn");
    btn.attachEvent("onclick", function(){
        alert("Clicked");
    })

</script>
<input id="btn" type="button" value="Press me">
</body>
</html>
  • 2
    На каком браузере вы работаете? attachEvent не будет работать в большинстве современных браузеров.
  • 0
    О, также я использую Firefox 24.0. Это звучит неправильно, но это то, что о Firefox, сказал ... мы действительно добрались до 24.0? Вау, я не обращал внимания.
Показать ещё 2 комментария
Теги:

3 ответа

3
Лучший ответ

Пара вопросов:

  1. Ваш код не может работать до ПОСЛЕ загрузки документа. Он еще не найдет объекты на странице, если он запустится слишком быстро. Самый простой способ сделать это - просто переместить блок кода прямо перед </body>.
  2. attachEvent() предназначен только для старых версий IE. Все современные браузеры поддерживают .addEventListener().

Пересмотренный HTML/код:

<!DOCTYPE html>
<html>
<head>
    <title>Events</title>
</head>
<body>
<input id="btn" type="button" value="Press me">
<script type="text/javascript">
    var btn = document.getElementById("btn");
    btn.addEventListener("click", function(){
        alert("Clicked");
    })

</script>
</body>
</html>

Рабочая демонстрация: http://jsfiddle.net/jfriend00/Dmqdn/

  • 0
    Догадаться. Благодарю. Это было правильно. У меня просто нет представителя, чтобы поддержать.
  • 0
    @JerryWalker - после того, как прошло нужное количество времени, вы все равно можете выбрать один из ответов в качестве «лучшего ответа», нажав на флажок слева от ответа.
0

Здесь jsfiddle иллюстрирует решение. Вам нужно сделать две вещи, чтобы сделать эту работу:

  1. Переместите <script> ниже ввода
  2. Замените attachEvent с помощью addEventListener. attachEvent больше не поддерживается

Здесь код:

<input id="btn" type="button" value="Press me">

<script type="text/javascript">
    var btn = document.getElementById("btn");
    btn.addEventListener("click", function(){
        alert("Clicked");
    })
</script>
0

Для этого нужно работать с FF (и другими современными браузерами):

document.addEventListener("DOMContentLoaded", function(event) {
    var btn = document.getElementById('btn');
    btn.addEventListener('click', function() {
        console.log('Clicked');
    });
});

Это безопасно для обеспечения полной загрузки DOM, прежде чем пытаться получить к нему доступ.

Я использовал console.log, вы должны ознакомиться с ним, это поможет вам многое. Проверьте FireBug для FF, инструменты разработчика в Chrome.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню