javascript - 如何在调用函数或执行其他操作之前更改背景颜色
问题描述
我想在调用之前更改“lol”按钮的颜色testFunction()
。
function testFunction() {
for (var i = 0; i < 200; i++) {
console.log(i);
}
return 0;
}
$("button").click(function() {
$("button").css("background-color", "#6ddc5d");
testFunction();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>lol</button>
没有功能,我怎么能做同样的事情?下面的示例代码:
$("button").click(function() {
$("button").css("background-color", "#6ddc5d");
// change color, then run this below operation
for (var i = 0; i < 200; i++)
console.log(i);
// more stuff here
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>lol</button>
解决方案
问题是因为您正在运行的循环是同步的。这会阻止 UI 线程更新您修改的背景颜色。
要解决此问题,请testFunction()
在超时内0
延迟调用:
function testFunction() {
for (var i = 0; i < 200; i++) {
console.log(i);
}
return 0;
}
$("button").click(function() {
$("button").css("background-color", "#6ddc5d");
setTimeout(testFunction, 0);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>lol</button>
没有该功能的版本的逻辑是相同的,您只需将其包装在 a 中setInterval()
:
$("button").click(function() {
$("button").css("background-color", "#6ddc5d");
setTimeout(function() {
for (var i = 0; i < 200; i++) {
console.log(i);
}
}, 0);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>lol</button>
推荐阅读
- flutter - 如何从列表中获取从开始日期到结束日期的数据表行?
- node.js - 禁用在 cognito 上的电子邮件验证时发送的验证码
- mysql - XAMPP MySQL 突然无缘无故停止工作
- java - 如何在 postgres 中查询这个 JSONB 列?
- javascript - 未找到 node_modules/cypress/types
- reactjs - 从 ReactJS 的列表中选择特定元素
- java - 如何将 Integer 和 Long 类型与 Junit 进行比较?
- rust - 当我尝试加入恐慌线程时,“Err”中有什么?
- python - 如何删除包含除一列以外的特定字符的列?
- android - Android Retrofit:如何仅从 List 中获取少量数据并将其显示在 alertdialog 列表中?