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

如何遍历对象为动态创建的每个div赋值对应的颜色样式

问题原因

  • 代码执行顺序错误:设置颜色的代码运行时,动态创建的div还没被插入到页面中,document.querySelectorAll("div") 只能拿到初始页面里的#slider-container这1个div,后续创建的元素根本没被选中
  • 颜色设置逻辑错误:两层循环会反复覆盖所有div的颜色,最后一次遍历赋值的是红色,所以所有文本都显示为红色
  • 没有按照要求用className控制样式,而是直接操作了style属性

修复方案

首先在style.css中提前定义对应颜色的样式类:

.text-red {
  color: red;
}
.text-green {
  color: green;
}
.text-blue {
  color: blue;
}

修改JS代码,把创建元素和添加类名的逻辑合并,删除原有错误的颜色设置循环:

const container = document.querySelector("#slider-container");

const data = [
  { name: "halfords", color: "red", logo: "" },
  { name: "microsoft", color: "green", logo: "" },
  { name: "posca", color: "blue", logo: "" }
];

// 创建元素时直接绑定对应样式类
function createMenuItem(item) {
  let div = document.createElement("div");
  div.textContent = item.name;
  div.classList.add(`text-${item.color}`);
  return div;
}

document.addEventListener("DOMContentLoaded", function () {
  for (let i = 0; i < data.length; i++) {
    container.appendChild(createMenuItem(data[i]));
  }
});

HTML代码无需改动,运行后即可实现预期的颜色效果。

内容的提问来源于stack exchange,提问作者dan-wearebeard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:06:02