首页  >  问答  >  正文

javascript - 为什么onclick不能直接调用含参函数而需要写成onclick=function(){fn(p)}的形式?

js新手,求教大神,为什么onclick不能直接调用含参函数而需要写成onclick=function(){fn(p)}的形式?而非含参函数可以直接写为onclick=fn();?
深层次原理是什么?谢谢

高洛峰高洛峰2696 天前820

全部回复(2)我来回复

  • PHPz

    PHPz2017-05-19 10:33:56

    onclick其实是可以直接绑定有参数的函数,如下:

    const input = document.getElementById('input');
    input.onclick = function(params){
      console.log(params);
    };

    但是,请注意,你的需求是执行函数fn(p),执行的结果是返回一个值,而不是一个函数。
    fn(p),执行的结果是返回一个值,而不是一个函数。
    onclick作为点击时的回调事件,如果绑定,是一定要绑定一个函数的,而不是一个值。如下:

    input.onclick = function(){
      fn(p);
    };

    这里的意思是,给input绑定一个onclick事件,这个事件是一个函数,点击时,回调就被执行了,意味着函数也被执行了,函数执行时,其中的语句fn(p)事件,这个事件是一个函数,点击时,回调就被执行了,意味着函数也被执行了,函数执行时,其中的语句fn(p)就被执行了。

    回复
    0
  • 高洛峰

    高洛峰2017-05-19 10:33:56

    onclick = function(e) {console.log(e)}

    尝试绑定这个click函数 ,再看下结果呗

    回复
    0
  • 取消回复