很抱歉,很难想出一个标题。我还是javascript的新手,有些让我困惑的事情。
这是我的代码
function getRandom() {
document.getElementById('divtest').innerHTML = (Math.floor(Math.random()* 20))
}
document.getElementById('buttontest').onclick = getRandom
因此,通常情况下,在文档中的某个地方调用函数时,或者甚至在添加onclick =' myFunction()'在html中,我需要用paranthese编写myFunction()。
但是在这里,当我在getElementById上执行.onclick时,如果我写= getRandom(),我的代码不起作用,它需要是= getRandom,如我的代码片段所示。
为什么?
谢谢!
答案 0 :(得分:2)
在Javascript中,您传递对函数的引用,而不是调用它(这会将函数的返回值添加为回调)。
在HTML中定义回调函数时,您正在将完整的调用写入HTML元素属性。
答案 1 :(得分:2)
通过执行()
,您可以调用函数。在您的情况下,如果添加getRandom
,则调用undefined
,结果onclick
将分配给var func = function () { return 2 }
console.log(func) //=> ƒ () { return 2 }
console.log(func()) //=> 2
事件处理程序。所以你想要分配函数本身。考虑一下例子:
ngOnInit(): void {
...
this.electionStateSubscription = this.electionState.getState()
.subscribe((state: ElectionState) => this.state = state);
}
ngOnDestroy(): void {
...
this.electionStateSubscription.unsubscribe();
}
答案 2 :(得分:0)
你的onClick
有点"指向"到包含在该元素上遇到click事件时要运行的代码的函数。这不是一个正常的呼叫"到函数,你将得到一些值作为返回。在那里你会使用括号。但是,您在此处将该函数设置为click事件的处理程序。