碼代碼
$(".site-doc-icon li .layui-anim").each(function () {
this.style.setProperty("background-color","#FFFF00","important");
})
以上無法實時修改對應 this的背景顏色
只能each回圈結束才 全部this修改了背景顏色
如何做到每一次回圈都實時修改樣式呢,求問
uj5u.com熱心網友回復:
中間改用this.style.backgroundColor='#FFFF00'
也不行
uj5u.com熱心網友回復:
$(".site-doc-icon li .layui-anim").each(function () {
$(this).css({"background-color","#FFFF00 !important;"});
})
uj5u.com熱心網友回復:
不能實時是什么意思,你這個回圈要多久完成?uj5u.com熱心網友回復:
我要實作一個流程圖的,this對應后臺的執行方法,完成一個,就將當前的this對應的節點修改顏色這樣
時間多久不是關鍵,關鍵是要每過一個回圈,修改一個對應的節點的背景顏色這樣子
uj5u.com熱心網友回復:
要配合后臺進度的話可以用ajax回呼uj5u.com熱心網友回復:
配合回呼了,每次回圈中執行ajax,回呼成功,我就修改背景顏色
但是實際,回呼成功 節點的顏色并沒有變動
而是 等全部回圈結束后,顏色才統一變過來
uj5u.com熱心網友回復:
可能是你的回圈已經結束了,后臺資料還沒到uj5u.com熱心網友回復:
我在上個帖子中已經說了,頁面渲染執行緒與js程式執行緒是互斥的。你必須每修改一處顏色之后結束當前js程式執行緒,重新建立一個新的程式執行緒來執行下一次的修改。
你的ajax是同步的吧。同步的都是在一個程式執行緒內完成,所以要改為異步的。
再有,不論是for回圈還是each()遍歷都只能在一個js程式執行緒內完成,所以也不能用。
要用異步的ajax + 遞回函式的方式。
uj5u.com熱心網友回復:
var a = $(".site-doc-icon li .layui-anim");
var index = 0;
(function loop() {
if (index<a.length) {
$.ajax({
url: "xxxxxxxxxxxxxx",
type: "POST",
async: true,
success: function (data) {
a[index].style.setProperty("background-color","#FFFF00","important");
index++;
loop();
}
});
}
})();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/65627.html
標籤:JavaScript
上一篇:圖示都沒了怎么搞
