作者tomin (Schrödinger's cat)
看板Ajax
标题Re: [问题] Javascrip onClick参数
时间Sat May 1 21:14:31 2010
我做了一些测试。
发现:
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="
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
1F:→ TonyQ:可能是个ieonly的script吧,也有可能是记错了~_~ 05/01 21:17
※ 编辑: tomin 来自: 140.122.30.140 (05/01 21:20)
2F:推 No:加了括号就是呼叫function了,跟onload事件无直接关系 05/01 21:21
3F:→ tomin:喔 这解释合理 跑到那行就呼叫了 05/01 21:22