javascript用超时声明函数

时间:2012-02-25 05:51:44

标签: javascript

我有类似的javascript,我想设置这个函数参数的时间延迟。这是我的简单功能

function mopen(id)
    {   

        mcancelclosetime();

        if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
        ddmenuitem = document.getElementById(id);
        ddmenuitem.style.visibility = 'visible';

    }

这里我想用id.I表示

设置超时延迟

id应该以这样的时间延迟打开

function settimeout(mopen(id),1000)
{
}

但是我的这个尝试没有用,请帮助我如何做到这一点

更新

这是我的循环函数

 function hideshow(span) {
        hideDiv();
        var div = document.getElementById("DIV_" + span.id);
        if (div.style.display == "none")
        setTimeout(div.style.display = "block",2000);
        else
            div.style.display = "none"; 
    }

请你现在告诉我如何将div设置为div成为一个块。我设置了它但它不起作用

3 个答案:

答案 0 :(得分:1)

在传递给mopen()的匿名函数中调用setTimeout()

var t = setTimeout(function() {
  mopen(id)
}, 1000);

答案 1 :(得分:0)

那不行,你可以简单地做到这一点。在您的情况下,您定义了一个名为setTimeout的函数,这是不必要的,此方法已在浏览器的Javascript标准库中提供。

 setTimeout( function(){mopen(id)}, 1000);

通常你可以做到

 setTimeout( yourFunction, 1000);

完美无缺,但是当您必须将参数传递给setTimeout中的函数时,您可以使用第一个版本,就像在匿名“function(){}”调用中调用它一样。

答案 2 :(得分:0)

我已经给出了答案(不是你想象的那样)。将您的功能重写为

 function hideshow(span) {
    hideDiv();
    var div = document.getElementById("DIV_" + span.id);
    if (div.style.display == "none")
        setTimeout(function() { div.style.display = "block" }, 2000);
    else
        div.style.display = "none"; 
  }