JavaScript-оператор if внутри функции, чтобы избежать деления на ноль NaN результат? - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть это внутри функции, и проблема в том, что один из переменных может быть 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,00 вместо NaN при делении на 0. Есть идеи?Любая помощь приветствуется !!

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Вы пытаетесь использовать оператор управления потоком, где у вас должно быть выражение.

В вашем коде if ... не ничего не возвращает .Либо вы можете реорганизовать свой код, либо преобразовать оператор if в троичный оператор ? :, например:

resp.link.hits === 0 ? 0 : (data.earnings / data.hits * 100).toFixed(2)
0 голосов
/ 05 декабря 2018

Попробуйте троичный оператор.Синтаксис: expression ? trueValue : falseValue

Например:

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

0 голосов
/ 05 декабря 2018

Используйте троичный оператор как

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