+ -
当前位置:首页 → 问答吧 → setTimeout 问题

setTimeout 问题

时间:2011-10-09

来源:互联网

JScript code
function showMsg(id,msg){
    var obj = $(id);
    if(!obj){return;}
    obj.style.display = 'block';
    obj.innerHTML = msg;
    window.setTimeout("obj.style.display = 'none'",3000); //这里为什么效果
}

作者: cooc123   发布时间: 2011-10-09

参考

下班了。。。

作者: zsx841021   发布时间: 2011-10-09

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 = 'none';; //这里为什么效果
    clearInterval(str);
    }, 3000);
}

作者: imtns59521   发布时间: 2011-10-09

引用 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 =……


这样可以了,

我的代码问题出在哪呢?

作者: cooc123   发布时间: 2011-10-09

setTimeout中第一个参数要么是函数 要么是一个函数名字符串 总之是一个函数 而不是单纯的字符串

作者: fanchuanzhidu   发布时间: 2011-10-09

lz这么写也可以,主要是这么写的话,setTimeout会建一个函数,这个函数变量的作用域为window,无法取到showMsg函数作用域中变量了,就是说这里没法取到obj了。
Delphi(Pascal) code

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); //这里为什么效果
}

作者: llyy112233   发布时间: 2011-10-09