Re: [問題] Javascrip onClick參數
我做了一些測試。
發現:
1.加了括號()後,會在onload就執行,之後就不再執行,原因不明。
建議綁定事件時,不要加()。
2.用String沒有觸發eval。
結論:
function無參數時,使用onclick=functionName
function有參數時,使用onclick=function(){functionName(參數);}
※ 引述《TonyQ (沉默是金。)》之銘言:
: ※ 引述《tomin (Schrödinger's cat)》之銘言:
: : → TonyQ:其實可以啊, 不過要弄成String就是了, 呵
: : → TonyQ:我是覺得能不倚賴eval就不用囉,匿名函式清楚多了.
: : → tomin:記得不能加()耶 onClick=GetInfo; 而不能是=GetInfo()
: : → tomin:說也奇怪,呼叫時要(),綁定不用。而function可以加()和{}
: 你也說了這兩者的差異,有 () 的時候是call function ,也就是執行,
: 沒有的時候則是視為該function 的代號,把該function 指派給onclick。
: 基本上你只要抓準真正在assign給左邊時,
: 右邊到底是什麼東西,就不會有困擾了。
: 條列如下:
: onclick=GetInfo => function ,且沒有任何傳入值
這邊ok
: onclick="GetInfo('F123');" => String
: -> eval(str)
: -> function(){GetInfo('F123');}
我試了沒有eval耶
onload, onclick後 什麼事都沒發生
: onclick=GetInfo('F123'); => 不明,要看執行GetInfo後會return什麼東西。
會在onload就執行GetInfo('F123');
而onclick反而不會執行
跟我以前的經驗一樣 只是一時想不起來加了()會造成什麼問題
問題在於:執行的時間點是在一開始 反而在onclick卻不執行
不是我們想要的結果
: onclick=function(){ => function
: GetInfo('F123');
: }
這也ok
主要用Fx3測試。
code:
<html>
<head>
<script type="text/javascript" src="" rel="nofollow">http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1");</script>
<script type="text/javascript">
function GetInfo(){
alert(1);
}
function GetInfo2(x){
alert(x);
//return false;
}
$(function(){
/*
$("#btn1").click(function(){
GetInfo2(2);
});
*/
//document.getElementById("btn1").onclick = GetInfo;
//result: btn1 click, 1
//document.getElementById("btn1").onclick = GetInfo();
//result: onload, 1
//document.getElementById("btn1").onclick = GetInfo2;
//result: btn1 click, Object MouseEvent
//document.getElementById("btn1").onclick = GetInfo2();
//result: onload, undefined
//document.getElementById("btn1").onclick = GetInfo2(2);
//result: onload, 2; but onclick, nothing happens.
//document.getElementById("btn1").onclick = "GetInfo();";
//result: nothing works
//document.getElementById("btn1").onclick = "GetInfo2(2)";
//result: nothing works
});
</script>
</head>
<body>
<br><br>
<input style="font-size:4em" type="button" id="btn1" value="alert">
<br><br>
</body>
</html>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.30.140
→
05/01 21:17, , 1F
05/01 21:17, 1F
※ 編輯: tomin 來自: 140.122.30.140 (05/01 21:20)
推
05/01 21:21, , 2F
05/01 21:21, 2F
→
05/01 21:22, , 3F
05/01 21:22, 3F
討論串 (同標題文章)
完整討論串 (本文為第 10 之 13 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章