在函数完成之前获取JavaScript命令?

时间:2011-04-02 21:09:26

标签: javascript

我正在尝试在功能启动时隐藏按钮&显示一些文字和然后隐藏文字&在函数完成时重新显示按钮。

我很难做到这一点,因为JavaScript的工作方式是在整个功能完成之前它不会向屏幕输出任何内容;因此,我想要做的就是不工作。

我尝试在“onclick”命令中使用两个不同的函数,但这会产生相同的结果。

任何对JavaScript有更多了解的人都可以告诉我如何实现我在这里尝试做的事情吗?

编辑尝试了以下建议的代码:

function addCatsSIC2() {

    var addBtnWrapper = document.getElementById('addBtnWrapper');
    var addWait = document.getElementById('addWait');    

    addBtnWrapper.style.display = 'none';
    addWait.style.display = 'block';    

    setTimeout(function(){
        addCatsSIC();
    }, 10);

    addWait.style.display = 'none';
    addBtnWrapper.style.display = 'block';    

}

没用。唯一不同的是,我点击的按钮在功能完成之前没有“保持按下”。

3 个答案:

答案 0 :(得分:4)

试试这个

// disable the button
setTimeout(function(){
   // do your actions
   // re-enable the button
}, 10);

这应该让动作有机会完成,DOM动作将生效,然后执行超时功能。 JS没有线程,但这可能会产生类似的效果。

答案 1 :(得分:2)

考虑使用setTimout(func, 10)来运行函数的主要部分 - 这样UI更新将在主代码运行之前发生。

答案 2 :(得分:1)

您必须将更改UI的行添加到计时器功能:

window.setTimeout(function(){
   addCatsSIC();
   addWait.style.display = 'none';
   addBtnWrapper.style.display = 'block';
}, 10);

否则它将在addCatsSIC函数之前执行。