Добавление прослушивателей событий на элементах - Javascript

Есть ли способы прослушать onblur или onclick события в javascript из функции onload? вместо того, чтобы делать это в самом элементе.

<input type="button" id="buttonid" value="click" onclick="func()">

чтобы стать чем-то вроде

function onload() {
      var button = document.getElementById("buttonid");
      button.addEventListener("onclick", function() { alert("alert");});
}

ИЗМЕНИТЬ

<html>

<head>

     <script>

     function onload() {

        var button = document.getElementById("buttonid");

        if(button.addEventListener){
             button.addEventListener("click", function() { alert("alert");});
        } else {
             button.attachEvent("click", function() { alert("alert");});
        };
     };

          window.onload = onload;


     </script>

</head>

<body>

<input type="button" id="buttonid" value="click">


</body>

</html>

ОБНОВЛЕНИЕ

 <script type="text/javascript">

 function on_load() {

    var button = document.getElementById("buttonid");

    if(button.addEventListener){
         button.addEventListener("click", function() { alert("alert");});
    } else {
         button.attachEvent("click", function() { alert("alert");});
    };
 };

      window.onload = on_load();


 </script>

Ответ 1

То, как вы это делаете, прекрасно, но ваш слушатель событий для события click должен выглядеть следующим образом:

button.addEventListener("click", function() { alert("alert");});

Обратите внимание, что событие click должно быть прикреплено с помощью "click", а не "onclick".

Вы также можете попробовать сделать это по-старому:

function onload() {
   var button = document.getElementById("buttonid");
   // add onclick event 
   button.onclick = function() { 
        alert("alert");
   }
}

Обновление 1

Вам необходимо также контролировать для IE < 9, потому что эти Vs используют attachEvent(). Прикрепите это событие так, чтобы оно работало с браузерами динозавров:

if(button.addEventListener){
    button.addEventListener('click', function() { alert("alert");});    
} else if(button.attachEvent){ // IE < 9 :(
    button.attachEvent('onclick', function() { alert("alert");});
}

Обновление 2

На основе вашего редактирования этот должен работать работает просто отлично.

<html>
    <head>
        <script type="text/javascript">
            function init() {
                var button = document.getElementById("buttonid");
                if(button.addEventListener){
                    button.addEventListener("click", function() { alert("alert");}, false);
                } else if(button.attachEvent){
                    button.attachEvent("onclick", function() { alert("alert");});
                }
            };
            if(window.addEventListener){
                window.addEventListener("load", init, false);
            } else if(window.attachEvent){
                window.attachEvent("onload", init);
            } else{
               document.addEventListener("load", init, false);
            }
        </script>
    </head>
    <body>
        <input type="button" id="buttonid" value="click">
    </body>
</html>

Пожалуйста, не используйте window.onload = on_load();, это предотвратит запуск всех других прослушивателей событий onload, или вы рискуете, чтобы прослушиватель событий был перезаписан. Рассмотрим прикрепление события onload так, как я предлагаю выше.

Ответ 2

Лучший способ использования DOM (отлично работает), как это. Firs записывает вашу функцию/класс и использует ее в:

document.addEventListener('DOMContentLoaded', function(){
  // put here code
});
<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript">
    function myFunc(){ alert('Hellow there!'); }
    
    document.addEventListener('DOMContentLoaded', function(){
        document.getElementById('mybtn').addEventListener('click', myFunc);
    });
  </script>
</head>
  <body>
    <button id="mybtn">Cklik!</button>
  </body>
</html>

Ответ 3

Лучшим способом динамического добавления обработчиков событий будет использование библиотеки JavaScript, такой как jQuery, поскольку она абстрагирует любые детали, специфичные для браузера.

Ответ 4

чтобы продолжить мой разговор в разделе комментариев...

@simplified, попробуйте поместить это в <head> вашей страницы

<script type="text/javascript">
function my_onload() {
  var button = document.getElementById("buttonid");
  if(button.addEventListener){
    button.addEventListener("click", function() { alert("alert");}, true);
  }else{
    button.attachEvent("click", function() { alert("alert");});
  };
};
window.onload = my_onload;
</script>

и посмотрим, что произойдет. также, пожалуйста, сообщите нам, какой браузер вы используете. https://developer.mozilla.org/en/DOM/element.addEventListener

Ответ 5

<script>
var click = document.getElementById("click");
click.addEventListener("click", function() {
  var required = document.getElementById("required").value;
  if (required===null || required==="") {
    alert("Please make sure all required field are completed");
  }
  else  {
    alert("Thank you! \nYour sumbission has been accepted and you will receive a conformation email shortly! \nYou will now be taken to the Home page.");
  }
});
</script><html>
<body>
<div id="popup">
    <textarea cols="30" rows="2" name="required" id="required"></textarea>
    <input type="submit" id="click" value="Submit">
           <input type="reset" value="Reset" />
</div>
</body>
</html>