如何使用isNaN来检查输入是否是数字?

如何使用isNaN来检查输入是否是数字?

问题描述:

我想在我的代码中限制符号,负数和所有其他非相对的东西。我的教授告诉我使用isNaN,但我不知道如何在我的代码中应用。有人可以帮我解决这个问题吗?我重视我的代码如下
如何使用isNaN来检查输入是否是数字?

<!-- Network Latency Calculator --> 

<html> 
<head> 
    <meta charset = "utf-8"> 
    <title>Network Latency Calculation</title> 
    <script> 

    var firstNumber; // first string entered by user 
    var secondNumber; // second string entered by user 
var thirdNumber; // third string entered by user 
var fourthNumber; // fourth string entered by user 
    var number1; // first number to add 
    var number2; // second number to add 
var number3; // third number to add 
var number4; // fourth number to add 
    var sum; // sum of number1 and number2 and number3 and number4 
var sumresult; 




    // read in first number from user as a string 
    firstNumber = window.prompt("Enter the Propagation time (no negative number, letter, blank space, and symbol is not allow)"); 

    // read in second number from user as a string 
    secondNumber = window.prompt("Enter the Transmission time (no negative number, letter, blank space, and symbol is not allow)"); 


// read in third number from user as a string 
    thirdNumber = window.prompt("Enter the Queuing time (no negative number, letter, blank space, and symbol is not allow)"); 


// read in fourth number from user as a string 
    fourthNumber = window.prompt("Enter the Propagation delay (no negative number, letter, blank space, and symbol is not allow)"); 








    // convert numbers from strings to integers 
    number1 = parseFloat(firstNumber); 
    number2 = parseFloat(secondNumber); 
number3 = parseFloat(thirdNumber); 
number4 = parseFloat(fourthNumber); 

    sum = number1 + number2 + number3 + number4; // add the numbers 

sumresult = parseFloat(sum); 


    // display the results 
    document.writeln("<h1>The network latency is " + sum + "</h1>"); 
document.writeln("<p>Propagation time " + number1 + "</p>"); 
document.writeln("<p>Transmission time " + number2 + "</p>"); 
document.writeln("<p>Queuing time " + number3 + "</p>"); 
document.writeln("<p>Propagation delay " + number4 + "</p>"); 

if (sumresult < 1) 
     document.writeln("<p>Network performance is good.</p>"); 
else (document.writeln("<p>Warning: Network performance needs improvement.</p>")); 






    </script> 
</head><body></body> 

+0

'isNaN(其他)'为真,如果'whatever'不一个数字 - 注意:即使'1.23“是一个字符串,isNaN(”1.23“)将是假的 - 所以如果你想像这样使用它们,你仍然需要将值解析/强制为'Number' –

在生产Web应用程序,你就不会提示输入数字用户 - 你会显示一个表单供用户填写。

但是,因为我们正在与玩具应用程序时,你可以简单地重复提示,直到用户得到它的权利:

function getNumberFromUser(promptText) { 
    var n = NaN; 
    while(isNaN(n) || (n < 0)) { 
     var nString = window.prompt(promptText); 
     n = parseFloat(nString); 
    } 
    return n; 
} 
var number1 = getNumberFromUser("Enter the Propagation time (no negative number, letter, blank space, and symbol is not allow)"); 
var number2 = getNumberFromUser("Enter the Transmission time (no negative number, letter, blank space, and symbol is not allow)"); 
//etc 
+1

我还没有测试过这个,但是如果他们输入任何正数,那么是不是你的while语句要重复? – jas7457

+0

@ jas7457 - Doh!它应该是' ='。我会解决它。 –

+0

我应该在promt之前添加代码吗?因为webstie不运行。 –