扫码关注官方订阅号
Document 我可以点击一下吗 你要是点击我就隐藏了
我可以点击一下吗
你要是点击我就隐藏了
人生最曼妙的风景,竟是内心的淡定与从容!
"test()" 改为 test
"test()"
test
前面关于 setTimeout 不能给字符串参数的答案都是胡扯
setTimeout
你的代码不能执行,最直接的问题在于作用域不对,setTimeout传入的字符串会被eval执行,所以这段代码的执行环境是global(全局作用域),而test这个函数是在一个局部作用域里,因此timeout要执行的时候会报错
eval
global
ReferenceError: Can't find variable: test
因此,只需要把test改为全局变量就可以了:
function test() 替换为 test = function() 其他都不变
function test()
test = function()
当然通过闭包把局部变量test保留下来也是可以的:
字符串"test()" 替换为 函数闭包function(){test()} 其他都不变
function(){test()}
我的回答有问题,其他答者已经给出答案了。
<script src="http://4g.ruxiancom.com/skin/js/jquery-1.9.1.min.js"></script> <script type="text/javascript"> // 放在 这里 function test(){ $(".keyi").hide("slow",function(){ alert("我要隐藏了"); }); } $(function() { $(".nihao").click( function(){ // 又或者 定时器 实参 是 函数 比如 setTimeout(test,5000); setTimeout("test()",5000); // 其实 只要 把 test 函数 放 全局 的 地方 就 可以 了 } ); } ); </script> <p class="nihao">我可以点击一下吗</p> <p class="keyi">你要是点击我就隐藏了</p>
谢谢以上所有的人,你们太热心了
setTimeout((这里是个回调函数,而不是一个字符串),延迟时间);
补充更正回答:1楼回答的已经很好了,我自己也做个笔记 setTimeout的回调函数如果不加()会延迟执行且不会执行return的函数,但是如果加上()就会立即执行且其return的函数会延迟执行。
被踩了也怪自己技术功底不够,如果答案有问题,麻烦还请给出理由~
setTimeout第一个参数应该是一个回调函数,不应该是字符串的
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
"test()"改为test前面关于
setTimeout不能给字符串参数的答案都是胡扯你的代码不能执行,最直接的问题在于作用域不对,
setTimeout传入的字符串会被eval执行,所以这段代码的执行环境是global(全局作用域),而test这个函数是在一个局部作用域里,因此timeout要执行的时候会报错ReferenceError: Can't find variable: test因此,只需要把
test改为全局变量就可以了:function test()替换为test = function()其他都不变当然通过闭包把局部变量
test保留下来也是可以的:字符串
"test()"替换为 函数闭包function(){test()}其他都不变我的回答有问题,其他答者已经给出答案了。
谢谢以上所有的人,你们太热心了
setTimeout((这里是个回调函数,而不是一个字符串),延迟时间);
补充更正回答:1楼回答的已经很好了,我自己也做个笔记 setTimeout的回调函数如果不加()会延迟执行且不会执行return的函数,但是如果加上()就会立即执行且其return的函数会延迟执行。
被踩了也怪自己技术功底不够,如果答案有问题,麻烦还请给出理由~
setTimeout第一个参数应该是一个回调函数,不应该是字符串的