課程
/前端開發(fā)
/JavaScript
/JavaScript進階篇
為什么當頁面加載時,就彈出了提示框?
btn.onclick=function(){alert('hello')}就行?而btn.onclick=btn()就不行
2016-03-20
源自:JavaScript進階篇 5-3
正在回答
因為tcon();表示是調用了這個方法,直接執(zhí)行這個函數的代碼,如過你把()去掉 就好了!
hcl哦了 提問者
沒有情緒 回復 hcl哦了 提問者
進擊的小奇 回復 沒有情緒
zhongjing
答案轉 ??
簡單點說,帶括號的是函數調用,直接執(zhí)行函數;不帶括號的是綁定事件,事件觸發(fā)再執(zhí)行。
復雜點說,帶括號的是把返回值賦值給事件,不帶括號的是把函數體所在地址位置賦值給事件。
舉個例子來說就是
<div id="a">函數括號那回事</div><input id="ip" type="button" value="點擊變色"><script type="text/javascript">? ?function cc(){? ? ? ?var a=document.getElementById("a");? ? ? ?a.style.color="red";? ?}? ?function change(){? ? ? ?var ip=document.getElementById("ip");? ? ? ?//ip.onclick=cc; ? //正常綁定事件,onclick觸發(fā)執(zhí)行? ? ? ?ip.onclick=cc(); ? //調用cc,直接執(zhí)行? ?}? ?change(); ?//調用change,直接執(zhí)行</script>
上面代碼扔body里,2種挨個感受一下就知道了。
然后會有一個新問題,假如函數需要傳參怎么辦,這時候需要ip.onclick=function(){cc(obj);},理解方式一樣,綁定一個函數,函數在觸發(fā)onclick時執(zhí)行,函數內容是執(zhí)行cc。
如有錯誤,望指正
您用的是什么軟件,做前端.
?btn.onclick=tcon()因為這一句是直接執(zhí)行了,所以你沒有觸發(fā)就自己執(zhí)行了
btn.onclick=tcon(),你這句話表示調用tcon(),并把值賦給btn.onclick,肯定一加載就運行函數并賦值,你要點擊再運行函數,要這樣寫<input type="button" ?value="點點我" id="btn" onclick="tcon()">?
舉報
本課程從如何插入JS代碼開始,帶您進入網頁動態(tài)交互世界
2 回答為什么沒有點start他就自動運行了
3 回答怎么沒有觸發(fā)
2 回答為什么不能運行,有沒有高手給看一下,我自己實在找不到錯誤在哪了
4 回答為什么confirm.alert這種代碼都會自己運行兩次?
2 回答我自己寫的script代碼無法運行,這是為什么?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優(yōu)惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-03-20
因為tcon();表示是調用了這個方法,直接執(zhí)行這個函數的代碼,如過你把()去掉 就好了!
2016-08-05
答案轉 ??
簡單點說,帶括號的是函數調用,直接執(zhí)行函數;不帶括號的是綁定事件,事件觸發(fā)再執(zhí)行。
復雜點說,帶括號的是把返回值賦值給事件,不帶括號的是把函數體所在地址位置賦值給事件。
舉個例子來說就是
<div id="a">函數括號那回事</div>
<input id="ip" type="button" value="點擊變色">
<script type="text/javascript">
? ?function cc(){
? ? ? ?var a=document.getElementById("a");
? ? ? ?a.style.color="red";
? ?}
? ?function change(){
? ? ? ?var ip=document.getElementById("ip");
? ? ? ?//ip.onclick=cc; ? //正常綁定事件,onclick觸發(fā)執(zhí)行
? ? ? ?ip.onclick=cc(); ? //調用cc,直接執(zhí)行
? ?}
? ?change(); ?//調用change,直接執(zhí)行
</script>
上面代碼扔body里,2種挨個感受一下就知道了。
然后會有一個新問題,假如函數需要傳參怎么辦,這時候需要ip.onclick=function(){cc(obj);},理解方式一樣,綁定一個函數,函數在觸發(fā)onclick時執(zhí)行,函數內容是執(zhí)行cc。
如有錯誤,望指正
2016-06-09
您用的是什么軟件,做前端.
2016-03-20
?btn.onclick=tcon()因為這一句是直接執(zhí)行了,所以你沒有觸發(fā)就自己執(zhí)行了
2016-03-20
btn.onclick=tcon(),你這句話表示調用tcon(),并把值賦給btn.onclick,肯定一加載就運行函數并賦值,你要點擊再運行函數,要這樣寫<input type="button" ?value="點點我" id="btn" onclick="tcon()">?