setTimeout 问题

cooc123 2011-10-09 05:47:05
function showMsg(id,msg){
var obj = $(id);
if(!obj){return;}
obj.style.display = 'block';
obj.innerHTML = msg;
window.setTimeout("obj.style.display = 'none'",3000); //这里为什么效果
}
...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cooc123 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 llyy112233 的回复:]
lz这么写也可以,主要是这么写的话,setTimeout会建一个函数,这个函数变量的作用域为window,无法取到showMsg函数作用域中变量了,就是说这里没法取到obj了。

Delphi(Pascal) code


var obj; //一定要这么写的话,把obj定义为全局变量吧,推荐用2楼的方式实现
function showMsg(id,msg){
obj =……
[/Quote]

明白了
峭沙 2011-10-09
  • 打赏
  • 举报
回复
window.setTimeout(arg1, arg2);第一个参数如果是字符串的话,里面的变量必须是全局变量。
llyy112233 2011-10-09
  • 打赏
  • 举报
回复
lz这么写也可以,主要是这么写的话,setTimeout会建一个函数,这个函数变量的作用域为window,无法取到showMsg函数作用域中变量了,就是说这里没法取到obj了。

var obj; //一定要这么写的话,把obj定义为全局变量吧,推荐用2楼的方式实现
function showMsg(id,msg){
obj = $(id);
if(!obj){return;}
obj.style.display = 'block';
obj.innerHTML = msg;
window.setTimeout("obj.style.display = 'none'",3000); //这里为什么效果
}
豆虫 2011-10-09
  • 打赏
  • 举报
回复
setTimeout中第一个参数要么是函数 要么是一个函数名字符串 总之是一个函数 而不是单纯的字符串
cooc123 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 imtns59521 的回复:]

JScript code

function showMsg(id,msg){
var obj = $(id);
if(!obj){return;}
obj.style.display = 'block';
obj.innerHTML = msg;
str = setTimeout(function (){
obj.style.display =……
[/Quote]

这样可以了,

我的代码问题出在哪呢?
hellNo 2011-10-09
  • 打赏
  • 举报
回复

function showMsg(id,msg){
var obj = $(id);
if(!obj){return;}
obj.style.display = 'block';
obj.innerHTML = msg;
str = setTimeout(function (){
obj.style.display = 'none';; //这里为什么效果
clearInterval(str);
}, 3000);
}
三石-gary 2011-10-09
  • 打赏
  • 举报
回复
参考

下班了。。。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧