2017-01-01 44 views
-4

在此代码段中,我想总结插入到prpmpts中的值(数值是其他明智的警报错误输入)。但我的问题是,当我连插数它提醒输入错误,而不是和值如何在javascript中添加2个数字值

function sumation(a,b){ 
 
if (typeof a == "number" && typeof b == "number") 
 
return (a + b); 
 
else 
 
alert("wrong input") 
 
} 
 

 
window.onload = function(){ 
 
    var val1 = prompt("insert first number",""); 
 
    var val2 = prompt("insert second number",""); 
 
    var result = sumation(val1,val2); 
 
    alert(result); 
 
};
<!DOCTYPE html> 
 
<!-- 
 
To change this license header, choose License Headers in Project Properties. 
 
To change this template file, choose Tools | Templates 
 
and open the template in the editor. 
 
--> 
 
<html> 
 
    <head> 
 
     <title>TODO supply a title</title> 
 
     <meta charset="UTF-8"> 
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
     
 
    </head> 
 
    <body> 
 
     <script src="newjavascript.js"></script> 
 
    </body> 
 
</html>

+0

'typeof运算(一)'和'typeof运算(B)'是一个'string',因此错误的输出 –

+0

[使用jQuery](https://howtodoinjava.files.wordpress.com/2013/04/use-jquery.gif) – vlaz

回答

1
function sumation(a,b){ 
    a = parseInt(a); 
    b = parseInt(b); 
    if (isNaN(a) || isNaN(b)) alert("wrong input") 
    else return a + b; 
} 
0

要理解上述行为,尝试去通过prompt返回类型:

一个字符串。如果用户点击“确定”,则返回输入值。如果用户点击“取消”,则返回空值。如果用户单击确定而不输入任何文本,则会返回一个空字符串。

0

您可以请使用isNaN(一)

function sumation(a,b){ 
 
if (isNaN(a) || isNaN(b)) 
 
    alert("wrong input"); 
 
else 
 
return (+a + +b); 
 
} 
 

 
window.onload = function(){ 
 
    var val1 = prompt("insert first number",""); 
 
    var val2 = prompt("insert second number",""); 
 
    var result = sumation(val1,val2); 
 
    alert(result); 
 
};
<!DOCTYPE html> 
 
<!-- 
 
To change this license header, choose License Headers in Project Properties. 
 
To change this template file, choose Tools | Templates 
 
and open the template in the editor. 
 
--> 
 
<html> 
 
    <head> 
 
     <title>TODO supply a title</title> 
 
     <meta charset="UTF-8"> 
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
     
 
    </head> 
 
    <body> 
 
     <script src="newjavascript.js"></script> 
 
    </body> 
 
</html>

-1

使用parseInt函数()。

function sumation(a,b){ 
 
if (typeof a == "number" && typeof b == "number") 
 
return (a + b); 
 
else 
 
alert("wrong input") 
 
} 
 

 
window.onload = function(){ 
 
    var val1 = parseInt(prompt("insert first number","")); 
 
    var val2 = parseInt(prompt("insert second number","")); 
 
    var result = sumation(val1,val2); 
 
    alert(result); 
 
};
<html> 
 
    <head> 
 
     <title>TODO supply a title</title> 
 
     <meta charset="UTF-8"> 
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
     
 
    </head> 
 
    <body> 
 
     <script src="newjavascript.js"></script> 
 
    </body> 
 
</html>

0

使用parseInt()从的输入解析的整数,或parseFloat()解析一个浮点数。如果使用parseInt(),则最好将基数(基数)作为10传递给十进制数。

如果基数是未定义的或0(或不存在),JavaScript的假定:

  • 如果输入字符串以 “0x” 或 “0X” 开头,基数为16(十六进制)和解析字符串的其余部分。
  • 如果输入字符串以“0”开始,则基数为八(八进制)或十(十进制)。究竟选择哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持此功能。出于这个原因,当使用parseInt时总是指定一个基数。
  • 如果输入字符串以任何其他值开头,则基数为10(十进制)。 1

此外,isNaN()是另一种简单的方法来检查一个值是不是数字(即NaN)。

function sumation(a,b){ 
 
if (!isNaN(a) && !isNaN(b)) 
 
return (a + b); 
 
else 
 
alert("wrong input") 
 
} 
 

 
window.onload = function(){ 
 
    var val1 = parseFloat(prompt("insert first number",""),10); 
 
    var val2 = parseFloat(prompt("insert second number",""),10); 
 
    var result = sumation(val1,val2); 
 
    alert(result); 
 
};
<!DOCTYPE html> 
 
<!-- 
 
To change this license header, choose License Headers in Project Properties. 
 
To change this template file, choose Tools | Templates 
 
and open the template in the editor. 
 
--> 
 
<html> 
 
    <head> 
 
     <title>TODO supply a title</title> 
 
     <meta charset="UTF-8"> 
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
     
 
    </head> 
 
    <body> 
 
     <script src="newjavascript.js"></script> 
 
    </body> 
 
</html>

0

你可以改变你的函数变成这样:

window.onload = function(){ 
    var val1 = parseInt(prompt("insert first number","")); 
    var val2 = parseInt(prompt("insert second number","")); 
    var result = sumation(val1,val2); 
    alert(result); 
};