将样式替换为多个类的JS

  • 本文关键字:JS 样式 替换 javascript
  • 更新时间 :
  • 英文 :


如何使用多个类来执行此代码?

$("td.field_358").each(function() {
var td = document.getElementsByClassName('field_358');
for (i = 0; i < td.length; i++) {
if (td[i].innerHTML.indexOf('Yes') !== -1) {
td[i].style.backgroundColor = '#f7fef7';
} else if (td[i].innerHTML.indexOf('No') !== -1) {
td[i].style.backgroundColor = '#fbe8ea';
}
}  
})

实际上,我在重复不同类的代码,只是替换类。。。field_358、field_123…等。可以做一些更方便的事情,比如:

$("td.field_358", "td.field_359", "td.field_360").each(function() {
var td = document.getElementsByClassName('field_358', 'field_359', 'field_360');
});

我是JS Noob。。。

您可以将所有感兴趣的css类放在一个数组中,并对其进行迭代。对于每一次迭代,你都要执行你已经得到的代码:

['field_358', 'field_359', 'field_360'].forEach(function (cssClass) {
var td = document.getElementsByClassName(cssClass);
for (i = 0; i < td.length; i++) {
if (td[i].innerHTML.indexOf('Yes') !== -1) {
td[i].style.backgroundColor = '#f7fef7';
} else if (td[i].innerHTML.indexOf('No') !== -1) {
td[i].style.backgroundColor = '#fbe8ea';
}
}
});

工作示例可在https://jsfiddle.net/9sba06r4/3

附带说明:这个任务不需要jQuery,只需要一个或多或少最新的浏览器。

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

这里有一个可重复使用的函数,它允许您传递一个数字数组,表示您希望作为目标的id,还允许您传递表示您希望用于高亮显示的颜色的字符串。

您只需定义函数的参数并调用它。

const ids = [1, 2, 3, 4];
const yesColor = '#37fef7';
const noColor = '#fbe8ea';
highlightTds(ids, yesColor, noColor);
function highlightTds(ids, yesColor, noColor) {

ids.map(id => {
const tds = document.querySelectorAll(`.field_${id}`);

for (const key of Object.keys(tds)) {
if (tds[key].innerHTML.indexOf('Yes')) {
tds[key].style.backgroundColor = yesColor;
} else if (tds[key].innerHTML.indexOf('No')) {
tds[key].style.backgroundColor = noColor;
}
}
});
}
<table>
<tr>
<td class="field_1">Yes</td>
</tr>
<tr>
<td class="field_2">No</td>
</tr>
<tr>
<td class="field_3">Yes</td>
</tr>
<tr>
<td class="field_4">No</td>
</tr>
<tr>
<td class="field_2">Yes</td>
</tr>
<tr>
<td class="field_1">No</td>
</tr>
</table>

最新更新