javascript - 如何在javascript的回调中强制重绘元素?
问题描述
我想做这样简单的事情:
基本上,我切换加载器元素的可见性,然后通过等待 10 秒来模拟某些东西的处理,最后再次切换可见性。我的问题是我想在 testLoader 回调函数中强制重绘,但到目前为止,元素的更新仅在回调完成执行后完成。执行按钮回调时是否有重绘方法?
testLoader : function() {
var loader = document.getElementById("loader")
var loaderVisibility = loader.style.visibility;
if (loaderVisibility == "visible") {
loader.style.visibility = "hidden"
} else {
loader.style.visibility = "visible"
}
var ms = 10000;
var start = new Date().getTime();
var end = start;
while (end < start + ms) {
end = new Date().getTime();
}
if (loaderVisibility == "visible") {
loader.style.visibility = "hidden"
} else {
loader.style.visibility = "visible"
}
}
<input type="button" id="testLoaderButton" value="Test Loader" onClick="testLoader()" />
解决方案
使用setTimeout
和不通过使用阻止事件循环while
function testLoader() {
var loader = document.getElementById("testLoaderButton");
var loaderVisibility = loader.style.visibility;
loader.style.visibility = "hidden";
setTimeout(function () {
loader.style.visibility = "visible";
}, 1000);
}
<input type="button" id="testLoaderButton" value="Test Loader" onClick="testLoader()" />
推荐阅读
- crystal-reports - 需要以编程方式在水晶报表中上下移动部分
- extjs - 使 ExtJS 应用程序严格 CSP 兼容的技巧或覆盖
- r - 如何从 MLeval 获取测试数据 ROC 图
- android - 以编程方式生成自定义视图时不调用 onRestoreInstanceState
- postgresql - 我的项目没有连接到我的 Postgres 服务器
- python - 无法在 FoxDot 上播放声音
- python-3.x - 如何可靠地引用一个过程(使用标签或类似的东西)?
- javascript - 如何在其他路线中的其他组件中获取更新的道具?
- c - 请告诉我这段代码有什么问题
- websphere - 无限安全(Jasypt/WebSphere)