You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于div值修改CSS Grid单元格背景失效,求助排查jQuery代码问题

问题:根据子元素数值动态修改CSS Grid单元格背景色

我现在需要根据从PHP数据库查询到的div值,修改CSS Grid中单元格(类名为.a)的背景色。之前用jQuery给另一个div实现过类似功能,但这次比较的值来自目标单元格的子div(类名为.datetime)。

我的HTML结构如下:

<div class='box a'> 
  <div class='box name'><a style='text-decoration:none; color:#444;' href='foobar.com' target='_blank'>Proper Name</a></div> 
  <div class='box mm'>75.49</div> 
  <div class='sog'>10.2</div> 
  <div class='box datetime'>1</div> 
</div>

我写的jQuery函数是这样的:

$('.datetime').each(function(index, value) { 
  var value = Number($(this).text()); 
  console.log(value); 
  if (value < 4) $('.a').css('background-color', '#fff'); 
  else if (value >= 4 && value <= 15) $('.a').css('background-color', 'orange'); 
  else $('.a').css('background-color', 'purple'); 
});

补充说明:

  • .datetime里的内容是表示两个时间间隔的分钟数(整数)
  • .a是我要修改背景色的CSS Grid单元格

现在遇到的问题是:所有.a元素的背景色都变成了#fff,条件判断没有正确执行,请问我哪里写错了?


问题分析与解决办法

你出错的核心原因很简单:在循环里每次修改背景色时,你选中了所有的.a元素,而不是当前正在处理的.datetime对应的那个父元素.a。

举个例子,假设你有多个.a单元格,第一个.datetime的值是1(符合<4的条件),这时候所有.a都被设为白色;第二个.datetime的值是5(符合4-15的条件),所有.a又被改成橙色;如果最后一个.datetime的值是1,那最后所有.a都会被改回白色——这就是为什么你看到所有单元格都是白色的原因。

修正后的代码应该这样写:

$('.datetime').each(function(index, element) { 
  var value = Number($(this).text()); 
  console.log(value); 
  // 找到当前.datetime对应的父级.a元素
  var parentBox = $(this).closest('.a');
  if (value < 4) {
    parentBox.css('background-color', '#fff'); 
  } else if (value >= 4 && value <= 15) {
    parentBox.css('background-color', 'orange'); 
  } else {
    parentBox.css('background-color', 'purple'); 
  }
});

关键修改点:

  • 使用$(this).closest('.a')来定位当前.datetime所在的那个.a单元格,而不是全局选中所有.a
  • 把修改样式的对象从全局的.a换成了当前对应的parentBox,这样每个单元格的样式只会根据自己的.datetime值来设置

另外还有个小细节:原代码里的each函数第二个参数你命名为value,但后面又重新定义了var value = Number(...),虽然不会报错,但有点混淆,我改成了element,你也可以换成其他清晰的名字。

这样修改后,每个.a单元格的背景色就会根据自己子元素.datetime的数值正确变化啦。

内容的提问来源于stack exchange,提问作者cadillacace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:28:30