首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现Javascript数组索引的比较?

问如何实现Javascript数组索引的比较?
EN

Stack Overflow用户
提问于 2017-07-29 21:47:39
回答 2查看 2.7K关注 0票数 0

我有一个基于单元格内容的表格样式。单元格内容仅限于特定的数据,因此我创建了一个数组。如果引用数组的索引,则可以对单元格进行样式设置:

代码语言:javascript
复制
var greencell = ["item1", "item2", etc]
var cells = document.getElementById("mytable").getElementsByTagName("td");
for (var i = 0; i < cells.length; i++) {
  if (cells[i].innerHTML == greencell[0]) {
    cells[i].style.backgroundColor = "#80ff80";
  }
}

但是,我需要访问整个数组。当我设置比较时,== greencell不应用样式。我遗漏了什么?我的做法正确吗?循环通过类似于cells循环的数组,并对循环结果设置比较?此刻,我的心在发呆。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-29 21:53:21

您需要循环遍历数组:

代码语言:javascript
复制
var greencell = ["item1", "item2", etc]

var cells = document.getElementById("mytable").getElementsByTagName("td");
var j = 0; 
for (var i = 0; i < cells.length; i++) {
    for (j = 0; j < greencell.length; j++) {
        if (cells[i].innerHTML == greencell[j]) {
            cells[i].style.backgroundColor = "#80ff80";
        }
    }
}

如果您希望为每个项目设置不同的颜色,则可以使用一个数组:

代码语言:javascript
复制
var colors = ["#ff0000", "#00ff00", "#0000ff"];
var cells = document.getElementById("mytable").getElementsByTagName("td");
var j = 0; // You shouldn't redeclare the variable each iteration
for (var i = 0; i < cells.length; i++) {
    for (j = 0; j < greencell.length; j++) {
        if (cells[i].innerHTML == greencell[j]) {
            cells[i].style.backgroundColor = colors[j];
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-07-29 22:20:44

对于更面向ES6的解决方案,您可以以Array的形式遍历HTMLCollection,然后根据单元格的文本决定样式。

HTML:

代码语言:javascript
复制
<table id="mytable">
  <tr>
    <td>item2</td>
    <td>wrong</td>
  </tr>
  <tr>
    <td>red</td>
    <td>item1</td>
  </tr>
</table>

联署材料:

代码语言:javascript
复制
var greencell = ["item1", "item2"];
var redcell = ["red", "wrong"];

var cells = document.getElementById("mytable").getElementsByTagName("td");

Array.from(cells).forEach(function(cell) {
  cell.style.cssText = getStyles(cell.innerHTML)
})

function getStyles(value) {
  if (greencell.indexOf(value) > -1) {
    return 'background-color: green; color: white';
  }
  if (redcell.indexOf(value) > -1) {
    return 'background-color: red; color: white';
  }
}

JSFiddle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45394372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档