<HTML>
<BODY>
<FORM>
<INPUT TYPE="button" NAME="button" value="test3" onclick="javascript:a2('rrrrrrr')">
</FORM>
<script>function a2(pram){
alert(" it is in a2 param1="+pram);
setTimeout(function(){a2('sss1')},3000); //为什么setTimeout后面的第一个参数不能加双引号?
setTimeout("a2('sss2')",5000); //为什么setTimeout后面的第一个参数必须加双引号?
}
</script>
</BODY>
</HTML>
<BODY>
<FORM>
<INPUT TYPE="button" NAME="button" value="test3" onclick="javascript:a2('rrrrrrr')">
</FORM>
<script>function a2(pram){
alert(" it is in a2 param1="+pram);
setTimeout(function(){a2('sss1')},3000); //为什么setTimeout后面的第一个参数不能加双引号?
setTimeout("a2('sss2')",5000); //为什么setTimeout后面的第一个参数必须加双引号?
}
</script>
</BODY>
</HTML>
解决方案 »
- document.form1.submit(); 无效的语法
- javascript里怎么把JAVA地LIST转化成javascript地数组啊?哪为大大帮下
- 噹選擇下拉框改變選項後,觸發的事件是什麼?
- js调用.net服务器端代码参数传递问题?
- 各位大侠,求教:javaScript 如何在单机上读取相对路径的TXT文件
- 帮帮忙
- 怎样能使不带滚动条的select中的选项“上移”或者“下移”
- 高级问题:访客访问我的网站时,自动弹出设置主页对话框,如果不设.则再弹出,直到设为止
- 如何通过按键中断一段JAVASCRIPT脚本的运行,比如中断一个循环
- ExtJS里自定义对象,extent: 'Ext.form.Panel', 调用render()无效
- fckeditor window.top.opener为空或不是对象
- 关于图表的js封装,求高人帮助!!!!!!!!!
setTimeout("a2('sss2')",5000); //直接传递js语句供定时器执行;
setTimeout("a2();alert('123');",5000);//这也是合法的,第二种方式和这个是一个道理也就是说setTimeOut第一个参数可以有两种类型,传递functiond的话就定时调用函数,传递字符串的话就当作js语句执行,明白了么?
相当于:new Function('alert(111)')()
function(){} 是匿名函数,会被直接调用 相当于
(function(){alert(111)})()
to wzs_xyz:非常感谢!但是想补充问一下,JS解析,可以知道参数是String,但是可以知道这是一个函数指针吗?
<BODY>
<FORM>
<!-- 这是一个成功的匿名调用 a2的第二个参数,传入了一个字符串,这里是传入了一个字符串-->
<INPUT TYPE="button" NAME="button" value="test1" onclick="javascript:a2('param1','(function(x,y){ alert(x+y);return x+y; }(3,4)) ' )"> <!-- 这里a2 的第二个参数,传入的是一个函数-->
<INPUT TYPE="button" NAME="button" value="test3" onclick="javascript:a2('param1', function(x,y){ alert(x+y);return x+y; } )"></FORM>
<script>
function average(x, y){
alert(x+y);
return x+y;
}function average2(){
alert("333");
}//a2的第二个参数,可以是一个函数指针,也可以是字符串,类似setTimeout
function a2(param1, param2){
alert(" it's in a2 param1=" + param1);
if(typeof(param2) == "function" ){
alert("22222");
new function(){param2}(); //这样的调用不成功,请问该怎么写?如何调用传入的这个参数?
alert("3333");
}else if (typeof(param2) == "string" ){
eval(param2); //这样的调用OK
};
alert(" it's in a2 param2=" + param1);
}
</script>
</BODY>
</HTML>
function a1(pram){
alert(" it is in a2 param1="+pram);
setTimeout("a3()",5000);
}
function a3(){
//.....
}</script>//如果你要传string参数可以这样:
setTimeout("a2("+ param +")",5000);
<BODY>
<FORM>
<!-- 这是一个成功的匿名调用 a2的第二个参数,传入了一个字符串,这里是传入了一个字符串-->
<INPUT TYPE="button" NAME="button" value="test1" onclick="javascript:a2('param1','(function(x,y){ alert(x+y);return x+y; }(3,4)) ' )"> <!-- 这里a2 的第二个参数,传入的是一个函数执政,但是具体实参,只能放在 a2函数里了,所以对已带有实参的,最好不要采用这种方式-->
<INPUT TYPE="button" NAME="button" value="test2" onclick="javascript:a2('param1', function(x,y){ alert(x+y);return x+y; } )"></FORM>
<script>
function average(x, y){
alert(x+y);
return x+y;
}function average2(){
alert("333");
}//a2的第二个参数,可以是一个函数指针,也可以是字符串,类似setTimeout
function a2(param1, param2){
alert(" it's in a2 param1=" + param1);
if(typeof(param2) == "function" ){
new function(){param2(3,4)}(); //这样的调用不成功,请问该怎么写?如何调用传入的这个参数?
}else if (typeof(param2) == "string" ){
eval(param2); //这样的调用OK
};
alert(" it's in a2 param2=" + param1);
}
</script>
</BODY>
</HTML>摸索出来了,谢谢各位,结贴赠分,多谢