事件处理程序在js中不起作用

时间:2013-06-04 11:42:43

标签: javascript events

为什么我的事件处理程序在我的javascript函数中不起作用。如果在js函数中访问按钮事件处理程序的方法不正确而不是如何正确执行它?

<script type="text/javascript">

function cl(){
    var button = document.getElementById('but');
    button.onclick = function (){
        alert('this works');
    }
}

</script>
</head>
<body>
<input type="button" value = "click" id = "but">
</body>

2 个答案:

答案 0 :(得分:3)

您已将事件处理程序方法包装到另一个方法中。打电话给你的方法,它会起作用

cl();

但是,我宁愿通过等待文档加载来初始化该页面上的脚本:

  function init() {
      button.onclick = function (){
          alert('this works');
      }
  }
  document.onload = init();

我将在主体标记之后移动包含JS代码的脚本标记,只是为了使其不引人注目,以便代码看起来像:

...
</head>
<body>
<input type="button" value="click" id="but">
<script type="text/javascript">
    function init() {
        var button = document.getElementById('but');
        button.onclick = function (){
            alert('this works');
        }
    }
    document.onload = init();
</script>
</body>

答案 1 :(得分:0)

您的cl函数中的代码未被调用,因为该函数未在任何地方调用。

您可以删除函数声明,如:

function cl(){
   document.getElementById('but').onclick = function() {
   alert('fdsfsdf');
};

或者通过调用cl();来调用函数进入代码:

cl();    
function cl(){
   document.getElementById('but').onclick = function() {
   alert('fdsfsdf');
};

看看here