Javascript:平均2个用户输入值

时间:2017-11-03 02:47:05

标签: javascript html numbers average

我为基本问题道歉,但我一直试图让这项工作很长一段时间,我似乎无法让这段代码返回一个值。

我很尴尬地承认我试图让它工作多久,以及我所看到的有多少StackOverflow问题,但是,没有一个像我的代码一样简单,当我试图更接近于如何我看起来,它不会提醒任何事情。

这个想法如下:

  • 用户输入2个数字,
  • 点击按钮
  •  
  • 并提醒他们输入的数字的平均值。

无论我做了多少次迭代,我的警报都是NaN。我真的可以使用一些建议。提前谢谢!



<html>
	<head>
		<title> Javascript </title>
	<body>
		<p> Enter two number for an average below </p>
		<p> Number 1<input type="text" id="userInput1"></input></p>
    	<p> Number 2<input type="text" id="userInput2"></input></p>
    	<button id="averageButton"> Calculate</button>
   
    <script type="text/javascript">
    	function average(a, b) {
    		return ((a + b) /2);
    	}

    	document.getElementById("averageButton").onclick = function (){
   	 		var a = document.getElementById("userInput1").value;
			var b = document.getElementById("userInput2").value;    		
    		alert(average());
		}
	</script>
    </body>

</html>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

乍一看,您可能需要将输入值从字符串转换为浮点数,并将它们实际传递给平均函数。

答案 1 :(得分:1)

您未能将数字a,b传递给您的函数 - 这是一个简单的错误。

但由于输入被视为字符串,您还需要将它们转换为数字a * 1

请参阅注释代码

<html>
	<head>
		<title> Javascript </title>
	<body>
		<p> Enter two number for an average below </p>
		<p> Number 1<input type="text" id="userInput1"></input></p>
    	<p> Number 2<input type="text" id="userInput2"></input></p>
    	<button id="averageButton"> Calculate</button>
   
    <script type="text/javascript">
    	function average(a, b) {
    		// force the input as numbers *1
        return ((a*1 + b*1) /2);
    	}

    	document.getElementById("averageButton").onclick = function (){
   	 		var a = document.getElementById("userInput1").value;
			var b = document.getElementById("userInput2").value;    		
    		// pass the numbers to the average function!
        alert(average(a,b));
		}
	</script>
    </body>

</html>

答案 2 :(得分:0)

您可能想要将输入更改为 <input type="number">以防止用户添加非数字值。

其次解析输入为document....value返回字符串,

var a = parseFloat(document.getElementById("userInput1").value);
var b = parseFloat(document.getElementById("userInput2").value);

如果你这样做,你就不必处理做a*1的有趣事务。

  // force the input as numbers *1
    return ((a*1 + b*1) /2);

此块不是必需的,因为将字符串与数字相乘会返回NaN值。