Показать сообщение отдельно
  #1 (permalink)  
Старый 05.04.2011, 17:32
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

Опыты с NaN. В чём прикол.
Не могу понять, почему не срабатывает if когда checkNum - NaN.
Способ "от противного", ессно, работает.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Test</title>
    <script type="text/javascript">
        function superFunction() {
            var curValue = document.getElementById("input1").value;
            var checkNum = Number(curValue);
            //alert(checkNum); //Если curValue не число - выводит NaN
            var xNaN = Number("NaN");
            //alert(xNaN); //Выводит NaN

            // не работает
            if (checkNum == 'NaN') alert("'== NaN'");
            if (checkNum == "NaN") alert('"== NaN"');
            if (checkNum === 'NaN') alert("'=== NaN'");
            if (checkNum === "NaN") alert('"=== NaN"');
            if (checkNum == xNaN) alert("checkNum == xNaN");
            if (checkNum === xNaN) alert("checkNum === xNaN");

            // Способ "от противного"
            var checkStr = curValue - 0;
            if (checkNum == checkStr) alert(checkNum);
            else alert("не число");
        }
    </script>
</head>
<body>
<div>
<input id="input1" type="text" value=""/>
<input id="button" type="button" value="кнопка" onclick="superFunction()"/>
</div>
</body>
</html>
Ответить с цитированием