这是部分脚本,我正在将 Oracle DB 中的表以 HTML 格式打印到电子邮件中,其中包含 3 列;对于第 3 列,只有两个值:PASS
或 FAIL
。如果单元格为PASS
,则单元格的bgcolor
将为绿色
,如果为FAIL
,我想要 bgcolor
为 RED
。
下面的代码有效,但我不确定如果条件为 FAIL
,如何添加另一个类(red
)。
chomp($ary[2]);
push(@HTML,sprintf("<td%s>%s</td>",
(($ary[2]) eq "PASS")? " class=\"green\"" : "",
$ary[2]));
最佳答案
只需用空字符串以外的内容结束三元条件:
push(@HTML, sprintf('<td class="%s">%s</td>', ($ary[2] eq 'PASS' ? 'green' : 'red'), $ary[2]));
不过,当简单的字符串插值就可以时,您真的需要 sprintf
吗?这会产生可以说更具可读性的代码:
my $class = $ary[2] eq 'PASS' ? 'green' : 'red';
push(@HTML, "<td class='$class'>$ary[2]</td>");
编辑:回答下面的第二个问题。我会使用简单的条件而不是多级三元运算符,因为我发现它的可读性更高。
my $class;
if ($ary[2] eq 'PASS') {
$class = 'green';
} elsif ($ary[2] eq 'FAIL') {
$class = 'red';
} else {
$class = 'yellow';
}
push(@HTML, "<td class='$class'>$ary[2]</td>");
关于html - 如何将多个 CSS 类添加到单个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323578/