函数中的JavaScript if-statement避免被零NaN结果除?

时间:2018-12-05 12:07:47

标签: javascript function if-statement math nan

我在函数中有此函数,问题是其中一个变量可能为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。有什么想法吗?任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:1)

将三元运算符用作

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

答案 1 :(得分:1)

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

例如:

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

答案 2 :(得分:0)

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

在您的代码if ...中,不返回任何东西。您可以像下面这样重新组织代码或将if语句转换为三元运算符? :

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