[Решено] Как реализовать прoверку NaN

Тема в разделе "JavaScript", создана пользователем Remca, 8 май 2016.

Статус темы:
Закрыта.
  1. Remca

    Remca

    Регистрация:
    3 май 2016
    Сообщения:
    0
    Симпатии:
    0
    Объясните мне пожалуйста что это такое и как конкретно реализуется на примере моего скрипта,я туплю. Я произвожу деления, и при делении на ноль выходит ошибка.

    Вычисления происходят по формуле на картинке
    [​IMG]
    Код:
    function areaRectangle8(){
        this.calc2();
    var m1 = document.forma1.t26.value||0;
        var p1 = document.forma1.t27.value||0;
        var p2 = document.forma1.t28.value||0;
        var p = (1+m1)*p1*p2/(p2+m1*p1);
    
    
        if ( (m1 == 0) || (p1 == 0) || (p2 == 0) ) {
            alert('Входные данные не могут быть равны 0');
            return;
        }
    
        if ( (m1 < 0) || (p1 < 0) || (p2 < 0) ) {
            alert('Входные данные не могут быть меньше 0');
            return;
        }
        var V=document.forma1.t30.value||0;
        var G=(p*V)/(1+m1);
        document.forma1.res8.value=G.toFixed(2);
    }
    
    function calc2() { //в подрасчёте есть промежуточное значение p
        console.log(1); //пользователь узнает чему равно p, только после ввода p1,p2 и m
    
        var m1 = +document.forma1.t26.value||0;
        var p1 = +document.forma1.t27.value||0;
        var p2 = +document.forma1.t28.value||0;
        var p = (1+m1)*p1*p2/(p2+m1*p1);
    
        document.forma1.t29[0].value = m1;
        document.forma1.t29[1].value = p1;
        document.forma1.t29[2].value = p2;
        document.forma1.t29[3].value = p.toFixed(2);
    }
    
    document.addEventListener("DOMContentLoaded", function (event) {
        document.forma1.t26.addEventListener("keyup", calc2);
        document.forma1.t27.addEventListener("keyup", calc2);
        document.forma1.t28.addEventListener("keyup", calc2);
    });
    HTML:
    <form name="forma1" style="background-color:#44944A;"> <!-- поменяю цвет формы -->
    <div id="resizable">
    <br>
    <table align="center">
    <p align="center">Количество сухого тампонажного цемента</p>
    <tr><td height="40px">
    <div class="price">Жидкостно-цементное отношение;</div><input name="t26" id="t29" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Плотность цемента т/м<sup>3</sup>.</div><input name="t27" id="t29" type="text" align="right" size="4"  maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Плотность жидкости затворения, т/м<sup>3</sup>.</div><input name="t28" id="t29" type="text" align="right" size="4"  maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Плотность тампонажного раствора;</div><input name="t29" id="t29" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Общий объем тампонажного раствора;</div><input name="t30" id="t30" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td>
    <input type="button" name="button" value="Вычислить" onClick="areaRectangle8();">
    <input type="text" name="res8" id="res8" size="10">
    </td></tr>
    </table>
    </div>
    <br>
    </form>
     
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    Nan - not a number. В переводе - не числовое значение. в JS для проверки есть метод isNaN(переменная) которая возвращает true или false, в зависимости число это или нет.
     
  3. Remca

    Remca

    Регистрация:
    3 май 2016
    Сообщения:
    0
    Симпатии:
    0
    а как это у меня реализовать?
    Не понял что написать просто в скрипте isNaN(NaN); прописать,но ведь тогда он всё равно показывает NaN
     
    Последнее редактирование: 9 май 2016
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    Код:
    if (isNaN(переменная)) {
        переменная = 0;
    }
     
  5. Remca

    Remca

    Регистрация:
    3 май 2016
    Сообщения:
    0
    Симпатии:
    0
    спасибо, разобрался:Acute:
     
Статус темы:
Закрыта.