我正在尝试在功能启动时隐藏按钮&显示一些文字和然后隐藏文字&在函数完成时重新显示按钮。
我很难做到这一点,因为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';
}
没用。唯一不同的是,我点击的按钮在功能完成之前没有“保持按下”。
答案 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
函数之前执行。