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