【问题标题】:Adding condition inside HTML在 HTML 中添加条件
【发布时间】:2017-04-20 14:15:45
【问题描述】:

我正在从存储过程向 send_email 功能发送 HTML 消息。 HTML 内容作为模板存储在表格中,动态值被传递给呈现显示的表格。 所有这些都是通过调用 SMTP 打开连接的存储过程完成的。

这是在存储过程中形成主体的方式。

SELECT REGEXP_REPLACE(
                REGEXP_REPLACE(
                REGEXP_REPLACE(
                REGEXP_REPLACE(
                REGEXP_REPLACE( 
                REGEXP_REPLACE(body, '<DUE_DAYS> business days',v_past_due)                                  
                                   , '<COMPANY_ADDRESS>', p_email(indx).address||'<BR/>'
                                                        ||p_email(indx).city||', '
                                                        ||p_email(indx).state||' '
                                                        ||p_email(indx).zip)                                  
                                   , '<TAX_PIN>', TO_CHAR(p_email(indx).tax_pin,'$9G999G999G990D00'))
                                   , '<TAX_AMT>', TO_CHAR(p_email(indx).tax_amt,'$9G999G999G990D00'))
                                   , '<TAX_AMT_PEN>', TO_CHAR(p_email(indx).tax_amt_pen,'$9G999G999G990D00'))
                                   , '<DUE_DATE>' , due_date)
           INTO v_body
           FROM pmail_txt
          WHERE status = 'DUE_SEND';

pmail_txt 中 status = 'DUE_SEND' 的 html 内容如下所示,

<TABLE BORDER="0" WIDTH="75%;"><TBODY>
<TR><TD WIDTH="40%">Overall Due Days:</TD><TD WIDTH="60%"><v_past_due></TD></TR>
<TR><TD WIDTH="40%">Company Address:</TD><TD WIDTH="60%"><COMPANY_ADDRESS></TD></TR>
<TR><TD WIDTH="40%">Pin Number:</TD><TD WIDTH="60%"><TAX_PIN></TD></TR>
<TR><TD WIDTH="40%">Amount Due:</TD><TD WIDTH="60%"><TAX_AMT></TD></TR><TR>
<TD WIDTH="40%">Ex Amount Due:</TD><TD WIDTH="60%"><EIND_AMT></TD></TR>
<TR><TD WIDTH="40%"><STRONG>Pendign Amount Due</STRONG>:</TD><TD WIDTH="60%"><STRONG><TAX_AMT_PEN></STRONG></TD></TR>
<TR><TD WIDTH="40%"><STRONG>Due DATE</STRONG>:</TD><TD WIDTH ="60%"><STRONG><DUE_DATE></STRONG></TD></TR>
</TBODY>
</TABLE>

我希望在 HTML 中添加一个条件,这样当值为 null 时,不会在电子邮件正文中显示该字段。

我已根据下面的评论更改了代码。我使它适用于非空字段,但是对于空字段/消息的空正文根本不出现。谁能告诉我哪里出错了?

<style>
.hidden_v_past_due  {
display:none;
}
</style>
    <TABLE BORDER="0" WIDTH="75%;"><TBODY>
    <TR class="hidden_v_past_due<v_past_due>"><TD WIDTH="40%">Overall Due Days:</TD><TD WIDTH="60%"><v_past_due></TD></TR>
    <TR><TD WIDTH="40%">Company Address:</TD><TD WIDTH="60%"><COMPANY_ADDRESS></TD></TR>
    <TR><TD WIDTH="40%">Pin Number:</TD><TD WIDTH="60%"><TAX_PIN></TD></TR>
    <TR><TD WIDTH="40%">Amount Due:</TD><TD WIDTH="60%"><TAX_AMT></TD></TR><TR>
    <TR><TD WIDTH="40%">Ex Amount Due:</TD><TD WIDTH="60%"><EIND_AMT></TD></TR>
    <TR><TD WIDTH="40%"><STRONG>Pendign Amount Due</STRONG>:</TD><TD WIDTH="60%"><STRONG><TAX_AMT_PEN></STRONG></TD></TR>
    <TR><TD WIDTH="40%"><STRONG>Due DATE</STRONG>:</TD><TD WIDTH ="60%"><STRONG><DUE_DATE></STRONG></TD></TR>
    </TBODY>
    </TABLE>

还尝试了如下的脚本

<TABLE BORDER="0" WIDTH="75%;"><TBODY>
<%if(v_past_due != null){%>
<TR><TD WIDTH="40%">Overall Due Days:</TD><TD WIDTH="60%"><v_past_due></TD></TR><%}%>
<TR><TD WIDTH="40%">Company Address:</TD><TD WIDTH="60%"><COMPANY_ADDRESS></TD></TR>
<TR><TD WIDTH="40%">Pin Number:</TD><TD WIDTH="60%"><TAX_PIN></TD></TR>
<TR><TD WIDTH="40%">Amount Due:</TD><TD WIDTH="60%"><TAX_AMT></TD></TR><TR>
<TR><TD WIDTH="40%">Ex Amount Due:</TD><TD WIDTH="60%"><EIND_AMT></TD></TR>
<TR><TD WIDTH="40%"><STRONG>Pendign Amount Due</STRONG>:</TD><TD WIDTH="60%"><STRONG><TAX_AMT_PEN></STRONG></TD></TR>
<TR><TD WIDTH="40%"><STRONG>Due DATE</STRONG>:</TD><TD WIDTH ="60%"><STRONG><DUE_DATE></STRONG></TD></TR>
</TBODY>
</TABLE>

也尝试了以下选项

<%if(<v_past_due>){%>....///......<%}%>
<%if(v_past_due != null){%>....///......<%}%>

所有这些都适用于 !null 条件,而所有这些都适用于 null。

【问题讨论】:

    标签: html sql oracle html-email


    【解决方案1】:

    您可以尝试向元素添加类属性,例如当相应的字段值为 null 时,生成的类名称将隐藏该元素。例如

    <style>
    .hidde_v_past_due {
    display:none;
    }
    </style>
    ...
    <TR class="hidde_v_past_due<v_past_due>"><TD WIDTH="40%">Overall Due Days:</TD><TD WIDTH="60%"><v_past_due></TD></TR>
    

    这样,当 v_past_due 为空时,类名将匹配样式中的类名,您的 TR 将不会显示。

    【讨论】:

    • 感谢您的回复。但是你在哪里添加这些脚本?在数据库中?会允许吗?仍然需要检查空条件是否正确。
    • 您将其包含在 HTML 内容中,作为模板的一部分。您不需要检查 null 条件,因为如果您的值为空,则生成的 HTML 将受到样式规则的影响。检查这个例子jsfiddle.net/tzyctfvj
    • 看起来样式有效,因为我没有看到特定字段,但它在所有条件下都隐藏,这意味着它不适用于 null 条件。这是我添加的代码 Pendign Amount Due
    • 任何帮助表示赞赏。
    • 请考虑您正在替换模板中的任何变量。按照上面的示例,任何具有“hidde_v_past_due”类的 TR 元素都将被隐藏。这就是将相同值附加到类 attr 的目的,当该值不为空时,生成的类将不同,因此样式规则将不适用。也就是说,只有当变量的值为空时,TR元素才可见。
    猜你喜欢
    • 1970-01-01
    • 2013-02-21
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 2013-06-07
    • 2017-03-25
    • 1970-01-01
    相关资源
    最近更新 更多