84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
js新手,求教大神,为什么onclick不能直接调用含参函数而需要写成onclick=function(){fn(p)}的形式?而非含参函数可以直接写为onclick=fn();?深层次原理是什么?谢谢
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
onclick其实是可以直接绑定有参数的函数,如下:
onclick
const input = document.getElementById('input'); input.onclick = function(params){ console.log(params); };
但是,请注意,你的需求是执行函数fn(p),执行的结果是返回一个值,而不是一个函数。fn(p),执行的结果是返回一个值,而不是一个函数。onclick作为点击时的回调事件,如果绑定,是一定要绑定一个函数的,而不是一个值。如下:
fn(p)
input.onclick = function(){ fn(p); };
这里的意思是,给input绑定一个onclick事件,这个事件是一个函数,点击时,回调就被执行了,意味着函数也被执行了,函数执行时,其中的语句fn(p)事件,这个事件是一个函数,点击时,回调就被执行了,意味着函数也被执行了,函数执行时,其中的语句fn(p)就被执行了。
onclick = function(e) {console.log(e)}
尝试绑定这个click函数 ,再看下结果呗
onclick
其实是可以直接绑定有参数的函数,如下:但是,请注意,你的需求是执行函数
fn(p)
,执行的结果是返回一个值,而不是一个函数。fn(p)
,执行的结果是返回一个值,而不是一个函数。onclick
作为点击时的回调事件,如果绑定,是一定要绑定一个函数的,而不是一个值。如下:这里的意思是,给input绑定一个
onclick
事件,这个事件是一个函数,点击时,回调就被执行了,意味着函数也被执行了,函数执行时,其中的语句fn(p)
事件,这个事件是一个函数,点击时,回调就被执行了,意味着函数也被执行了,函数执行时,其中的语句fn(p)
就被执行了。尝试绑定这个click函数 ,再看下结果呗