我尝试根据值分配单元格颜色。我从电子表格中导入范围。我看看每个值。如果它是1然后我想让单元格颜色为红色等。使表格工作正常,但颜色搞砸了。无法看到我的错误。
<? var data = getTheTable(); var lastRow = data.length-1; var rowsToShow=3; var mcolor='white';?>
<table class="center">
<tr>
<th>Name</th>
<th>Comment</th>
</tr>
<? for (var i = lastRow; i >(lastRow-rowsToShow); i--) { ?>
<tr>
<? for (var j = 0; j < data[i].length; j++) {
if (data[i][j]=='1'){mcolor='red';}
if (data[i][j]=='2'){mcolor='yellow';}
if (data[i][j]=='3'){mcolor='green';}
else {mcolor='blue';}
?>
<td>
<span style="background-color:<?= mcolor?>;">
<?= data[i][j] ?></span> </td>
<? } ?>
</tr>
<? } ?>
</table>
答案 0 :(得分:0)
您需要在此处使用“else”语句(或switch语句)。如果没有else,则会检查每个ifs,即使前一个ifs匹配。所以,即使你匹配数据[i] [j] =='1',你仍然会得到mcolor ='blue',因为你的最后一个if。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else
<? for (var j = 0; j < data[i].length; j++) {
if (data[i][j]=='1'){mcolor='red';}
else if (data[i][j]=='2'){mcolor='yellow';}
else if (data[i][j]=='3'){mcolor='green';}
else { mcolor='blue'; }
...
通常,如果您发现自己连续使用了一堆if / else语句,那么Switch / Case是一个更清晰的选项:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch
switch(data[i][j]){
case '1':
mcolor='red';
break;
case '2':
mcolor='yellow';
break;
case '3':
mcolor='green';
break;
default:
mcolor='blue';
}