javascript - 我可以根据 JavaScript 函数的结果更改我的 HTML 网格对象的类吗?

标签 javascript html css

我正在尝试制作一个方框网格,其中这些方框会根据 JSON 文件的内容改变颜色。我写了一些 JavaScript 输出一个字符串,说明每个框的颜色应该是什么。但是,我不知道如何将其转化为盒子的实际颜色。我知道我可以给每个盒子一个单独的 ID,但是有 300 多个盒子,那将是很多重复代码。目前,我的(非常简单的)代码如下所示:

if (parsedJSON[i]['status'] === "Finished") {
    alert("Green");
} else if (parsedJSON[i]['status'] === "Failed") {
    alert("Red");
} else {
    alert("Orange");
}

其中一个框的示例是:

.timed-out-test-box {
    background-color: darkorange;
}
<div class=timed-out-test-box></div>

关于如何让盒子有颜色而不是仅仅提醒颜色,有什么建议吗?

我使用的是 vanilla JS,框不是动态的。

最佳答案

如果您已经准备好盒子,那么您需要做的就是根据您的 parsedJSONstatus 向所述盒子添加一个 CSS 类。这是一个工作示例:

// Change status to your parsedJSON's logic
let status = ['Finished', 'Failed', 'Something Else']
let boxes = document.querySelectorAll('div.box')
let i = 0
for (box of boxes) {
  let newClass = ''

  // This is a dummy logical checking to change colours based on status
  if (status[i % 3] == 'Finished')
    newClass = 'green'
  else if (status[i % 3] == 'Failed')
    newClass = 'red'
  else
    newClass = 'orange'

  box.classList.add(newClass)
  i++
}
.box {
  height: 50px;
  width: 50px;
  margin: 10px;
  background-color: black;
}

.box.green {
  background-color: green;
}

.box.red {
  background-color: red;
}

.box.orange {
  background-color: orange;
}
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>
<div class = "box"></div>

基本上,只需添加一个基于status 的类。但是,如果 boxes 是自动创建的,只需像这样创建元素(当然要更改它以适应您的 parsedJSON 的需要):

let status = ['Finished', 'Failed', 'Something Else']
let body = document.querySelector('body')
let i = 0
for (i; i < 10; i++) {
  let newClass = ''

  if (status[i % 3] == 'Finished')
    newClass = 'green'
  else if (status[i % 3] == 'Failed')
    newClass = 'red'
  else
    newClass = 'orange'


  let newBoxDiv = document.createElement('div')
  newBoxDiv.classList.add('box', newClass)
  body.appendChild(newBoxDiv)
}

关于javascript - 我可以根据 JavaScript 函数的结果更改我的 HTML 网格对象的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59419920/

相关文章:

javascript - 跨浏览器窗口关闭事件

html - 响应式设计在不同尺寸的屏幕上显示不同

css - SVG - 填充标志模式中行之间的空格

javascript - $locatioChangeStart 多次触发

javascript - 了解 jQuery-Mobile 页面触发事件 - 为什么关闭时会显示对话框页面

javascript - 动态突出显示文本区域

javascript - 如何为一个元素禁用 JQuery 按键事件?

javascript - 从 highcharts 中的数组绘制饼图

javascript - 页面加载完成后执行javascript

javascript - 更改表格中每个单元格的颜色 HTML JavaScript CSS