【问题标题】:JavaScript if-statement inside function to avoid division by zero NaN result?函数内部的JavaScript if语句以避免除以零NaN结果?
【发布时间】:2019-05-07 00:04:00
【问题描述】:

我在一个函数中有这个,问题是其中一个变量可能是 0,我们都知道一个不能除以 0。

                    html += ('<div class="portlet banner-port" style="border-color: #2d0059;" class="panel-collapse collapse"> \
                            <div class="portlet-heading" style="background: linear-gradient(to right, rgba(0, 0, 0, 0.40) 0%, rgba(0, 0, 0, 0) 100%), #2d0059;"> \
                                <div class="portlet-title" style="color:#ffffff;"> \
                                    <h4> \
                                    <i class="fa fa-link fa-fw"></i> '+jstext.language.custom_direct_link+' <span style="float:right"><span>'+jstext.language.custom_raw_visits+': '+resp.link.hits+'</span> <span>'+jstext.language.custom_transactions+': '+resp.link.conv+'</span> <span>'+jstext.language.custom_earnings+': '+resp.link.earnings+' €</span>  <span>EPC: '+(resp.link.earnings / resp.link.hits * 100).toFixed(2)+' €</span></span> \
                                    </h4> \
                                </div> \
                                    <div class="portlet-body"><label>'+jstext.language.marketing_target_url+':</label> \
                                        <textarea style="font-weight:normal !improtant;" id="direct-link-'+resp.data.id+'" rows="1" class="form-control">'+resp.direct_url+'</textarea> \
                                    </div> \
                            </div> \
                        </div>')

因此在这种情况下,JSON 响应 resp.link.hits 可能为 0,然后 EPC 为,正如人们所期望的那样 - NaN。正如我所见,我在这里遇到了一些基本的语法问题。我在哪里声明在这部分显示 0 而不是 NaN:

<span>EPC: '+(resp.link.earnings / resp.link.hits * 100).toFixed(2)+' €</span>

我尝试了一些方法,例如:

<span>EPC: '+if( resp.link.hits === 0 ){0} else {(resp.link.earnings / resp.link.hits * 100).toFixed(2)}+' €</span>

上面带有 if 语句的示例使整个代码无法工作。除以 0 时,我不能让它显示 0.00 而不是 NaN。有什么想法吗?任何帮助表示赞赏!

【问题讨论】:

    标签: javascript function if-statement math nan


    【解决方案1】:

    使用三元运算符作为

    <span>EPC: ' + ( resp.link.hits === 0  ? 0 : (data.earnings / data.hits * 100).toFixed(2) + ' €</span>
    

    【讨论】:

    • 试过了。不工作。顺便说一句,语法是条件? exprT : exprF
    • 不确定,但它搞砸了整个代码。在控制台中,我看到了意外的令牌 }。
    • 你在用香草js吗?
    • 使用 jQuery。这是 DataTables init 的一部分。
    • 更新了答案。由于有花括号,我以为您使用的是任何 JS 模板库。
    【解决方案2】:

    您正在尝试在应该有表达式的地方使用流控制语句。

    在您的代码中,if ... 不会返回 任何内容。您可以重新组织代码或将if 语句转换为三元运算符? :,如下所示:

    resp.link.hits === 0 ? 0 : (data.earnings / data.hits * 100).toFixed(2)
    

    【讨论】:

    • 我知道,我知道。语法是条件? exprT : exprF 并且应该首先陈述真实的陈述,然后陈述错误。
    【解决方案3】:

    试试三元运算符。语法为expression ? trueValue : falseValue

    例如:

    &lt;span&gt;EPC: ' resp.link.hits === 0 ? 0 : (data.earnings / data.hits * 100).toFixed(2) + ' €&lt;/span&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多