После нажатия #theButton должно сработать предупреждение. Почему ни одно из событий не запускается с использованием следующих методов? Заранее спасибо.

  <html>
     <head>
      <script type="text/javascript" language="javascript">

       var theButton = document.getElementById("theButton");

       theButton.onclick = function(){alert("Clicked!");}
       theButton.onclick = clickAlert;
       theButton.onclick(alert("Clicked!"));

       function clickAlert(){
        alert("Clicked!");
       }
      </script>
     </head>
     <body>
      <input type="button" id="theButton">
     </body>
    </html>
0
Babiker 19 Июн 2010 в 00:24

5 ответов

Лучший ответ

У вас три проблемы

  1. Вы неправильно написали function в строке 7. (Между прочим, это приводит к ошибке во время выполнения)
  2. Вы пытаетесь получить доступ к узлу #theButton, прежде чем он станет доступен в DOM. Примите совет Пекки для этого
  3. Вы перезаписываете свойство onclick в строке 8 - не уверены, что вы делаете это специально или что
2
Peter Bailey 18 Июн 2010 в 20:31

Потому что theButton еще не существует, когда вы запускаете свой скрипт?

Оберните его в событие onload тела или ready() jQuery.

1
Pekka 18 Июн 2010 в 20:26

Мне нравится ответ jQuery.ready(), но я считаю, что вы также можете переместить блок <script> в какой-то момент, после того как вы нажмете кнопку, как в конце страницы.

1
Seattle Leonard 18 Июн 2010 в 20:33

Это работает, если вы поместите onclick внутри тега input (и произнесете все правильно):

<html>
     <head>
      <script type="text/javascript" language="javascript">



       function clickAlert(){
        alert("Clicked!");       

       }

      </script>
     </head>
     <body>
      <input type="button" id="theButton" NAME="theButton" onclick="clickAlert()">
     </body>
    </html>
1
T.T.T. 18 Июн 2010 в 20:33

Попробуйте обернуть его в функцию document.Ready ().

1
Brandon 18 Июн 2010 в 20:29