javascript - 如何使html表格变灰并在其中显示加载器?
问题描述
我有这个 html 表,它显示了一些关于人的数据。最后三列是对通缉犯执行某些操作的按钮。
想要的行为是当用户单击其中一个按钮以对某些用户执行操作时,表格变灰,因此用户无法单击任何其他按钮,并且加载程序显示在表格中间,直到 Ajax 响应解决,然后表恢复正常。
我的问题是如何使表格变灰以使其他按钮无法点击,并使用 javascript 在中间显示加载程序。
谢谢 :)
解决方案
像这样:你可以用 position: relative 元素包裹表格,并用加载微调器填充透明 div 区域。它将阻止用户单击按钮。
function action() {
var loader = document.querySelector("#loader");
loader.classList.remove("hidden");
fakeCall().then(function() {
loader.classList.add("hidden");
}).catch(function() {
loader.classList.add("hidden");
});
}
function fakeCall() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(true);
}, 1000);
});
}
.wrapper {
position: relative;
display: inline-block;
}
.loader {
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.5);
}
.hidden {
display: none;
}
<div class="wrapper">
<div class="loader hidden" id="loader"></div>
<table border="1" width="300" height="100">
<tr>
<td>a</td>
<td>b</td>
<td><button onclick="action()">click</button></td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td><button onclick="action()">click</button></td>
</tr>
</table>
</div>
推荐阅读
- node.js - 即使在 nodejs 中使用 cors() 后,访问也被 React 中的 cors 阻止
- java - Flyway-在名称中包含指定后缀的所有表中添加一列
- sql - 是否有任何查询来查找与 package_no 列对应的重复记录计数?
- vue.js - Vue:CSS 模块未使用 SCSS 应用或显示
- docker - 如何在带有/不使用 docker 的 azure 管道中使用 jmx 文件运行 JMeter
- node.js - Docusign:签名人/收件人签名后或信封完成后,如何将文件发送给他们?
- node.js - 如何在下一个 js 会话中存储大数据或使用会话文件存储?
- android - 从二维码获取结果后自动发送短信到手机号码
- maven - swagger-maven-plugin 没有生成@ApiResponse 方案
- reactjs - 如何从同一个组件调度多个动作?