![](/img/trans.png)
[英]Javascript how to make 2 events onclick (getElementById and function)
[英]In javascript, when doing getElementById().onclick = function, why are the function () not necessary?
抱歉,很難為此冠名。 我對javascript還是陌生的,這使我感到困惑。
這是我的代碼
function getRandom() {
document.getElementById('divtest').innerHTML = (Math.floor(Math.random()* 20))
}
document.getElementById('buttontest').onclick = getRandom
因此,通常,當在文檔中的某處調用函數時,或者甚至在html中添加onclick ='myFunction()'時,我都需要編寫myFunction()並附帶聲明。
但是在這里,當我在getElementById上執行.onclick時,如果我編寫= getRandom(),我的代碼將不起作用,如我的代碼片段所示,它必須為= getRandom。
這是為什么?
謝謝!
在Javascript中,您傳遞的是對該函數的引用,而不是調用它(這會將函數的返回值添加為回調)。
而在HTML中定義回調函數時,您會將完整的調用寫入HTML元素屬性。
通過執行()
您可以調用函數。 在您的情況下,如果您添加()
則調用getRandom
,結果( undefined
)將分配給onclick
事件處理程序。 因此,您要分配功能本身。 考慮示例:
var func = function () { return 2 }
console.log(func) //=> ƒ () { return 2 }
console.log(func()) //=> 2
您的onClick
是一種“指向”該函數的函數,該函數包含在該元素上遇到click事件時要運行的代碼。 這不是對函數的正常“調用”,在該函數中您將獲得一些返回值。 在那里您將使用括號。 但是,您在此處將函數設置為click事件的處理程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.