求助!!!!!jq 的在each()中,如何实时修改每个节点的颜色?

cool_soup29 2020-04-10 11:53:13
码代码

$(".site-doc-icon li .layui-anim").each(function () {
this.style.setProperty("background-color","#FFFF00","important");
})


以上无法实时修改对应 this的背景颜色
只能each循环结束才 全部this修改了背景颜色


如何做到每一次循环都实时修改样式呢,求问
...全文
399 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2020-04-15
  • 打赏
  • 举报
回复

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();	
			}
		});
   	}
})();
天际的海浪 2020-04-15
  • 打赏
  • 举报
回复
我在上个帖子中已经说了,页面渲染线程与js程序线程是互斥的。 你必须每修改一处颜色之后结束当前js程序线程,重新建立一个新的程序线程来执行下一次的修改。 你的ajax是同步的吧。同步的都是在一个程序线程内完成,所以要改为异步的。 再有,不论是for循环还是each()遍历都只能在一个js程序线程内完成,所以也不能用。 要用异步的ajax + 递归函数的方式。
BeMissing 2020-04-15
  • 打赏
  • 举报
回复
可能是你的循环已经结束了,后台数据还没到
cool_soup29 2020-04-10
  • 打赏
  • 举报
回复
引用 5 楼 Hello World, 的回复:
要配合后台进度的话可以用ajax回调
配合回调了,每次循环中执行ajax,回调成功,我就修改背景颜色 但是实际,回调成功 节点的颜色并没有变动 而是 等全部循环结束后,颜色才统一变过来
Hello World, 2020-04-10
  • 打赏
  • 举报
回复
要配合后台进度的话可以用ajax回调
cool_soup29 2020-04-10
  • 打赏
  • 举报
回复
引用 3 楼 Hello World, 的回复:
不能实时是什么意思,你这个循环要多久完成?
我要实现一个流程图的,this对应后台的执行方法,完成一个,就将当前的this对应的节点修改颜色这样 时间多久不是关键,关键是要每过一个循环,修改一个对应的节点的背景颜色这样子
Hello World, 2020-04-10
  • 打赏
  • 举报
回复
不能实时是什么意思,你这个循环要多久完成?
Hello World, 2020-04-10
  • 打赏
  • 举报
回复
 $(".site-doc-icon li .layui-anim").each(function () {
$(this).css({"background-color","#FFFF00 !important;"});
})
cool_soup29 2020-04-10
  • 打赏
  • 举报
回复
中间改用 this.style.backgroundColor='#FFFF00' 也不行

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧