参考
How to convert string into float in javascript? jQuery calculation NaN
目标
从用户获取两个数字输入值。 将第二个数字除以第一个数字。 将结果乘以100,使其表示为百分比。 将每个数字和结果添加到各个列表中。 通过onClick命令调用函数getTextInput()。
背景
我主要使用Java;我目前在数据结构课程(第二年CS学生)。我的熟练程度是中级的。我对javascript的熟悉是基本的。
问题
NaN结果。我尝试过多种方法来完成这项任务;我解析了两个输入值并将它们分配给新变量,并将两个初始字符串输入解析为浮点值。但是,我仍然在将这两个int或string类型的结果解析为float值时遇到问题。我应该解析为int类型的参数的浮点值吗?当我将字符串值转换为int值时,程序将不接受输入值和崩溃。为什么会这样?我查看了几个相关的帖子,但找不到任何能提供我正在寻找的信息的帖子。最好的方法是什么?非常感谢任何帮助或方向。谢谢。
注意最底层的代码已发布。
方法1 - 解析两个字符串浮动。当我将percentOfNumbers和percentageList打印到控制台时,“NaN”结果。
var num1 = document.getElementById(“numString1”); var num2 = document.getElementById(“numString2”);
percentOfNumbers = parseFloat(num2 / num1 * 100); percentageList.push(percentOfNumbers); percentOfNumbers.value =“”;
//将num1添加到List1 List1.push(num1.value); num1.value =“”;
//将num2添加到List2 List2.push(num2.value); num2.value =“”;
方法2 - 将每个文本输入解析为int值,将结果解析为float值。当我将percentOfNumbers和percentageList打印到控制台时,“NaN”结果。
var num1 = document.getElementById(“numString1”); var num2 = document.getElementById(“numString2”);
var num1Parsed = parseInt(num1); var num2Parsed = parseInt(num2);
percentOfNumbers = parseFloat(num2Parsed / num1Parsed * 100); percentageList.push(percentOfNumbers); percentOfNumbers.value =“”;
//将num1添加到List1 List1.push(num1Parsed.value); num1Parsed.value =“”;
//将num2添加到List2 List2.push(num2Parsed.value); num2Parsed.value =“”;
//示例输入值,2000表示num1,2333表示num2
//整个代码
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
--><!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
// separate lists for repeat user input values for num1, num2, and percentageOfNumbers
var List1 = [];
var List2 = [];
var percentageList = [];
var percentOfNumbers = 0;
var num1Parsed = 0;
var num2Parsed = 0;
function getTextInput() {
// retrieve two numbers of type 'String' from user and assign to appropriate var
var num1 = document.getElementById("numString1");
var num2 = document.getElementById("numString2");
// parse each string input number into an int
num1Parsed = parseInt(num1);
num2Parsed = parseInt(num2);
// divide second number by first number
// parse result and assign to percentOfNumbers var
// add percentOfNumbers value to percentageList
// reassign percentOfNumbers to ""
percentOfNumbers = (num2Parsed/num1Parsed * 100);
percentageList.push(percentOfNumbers);
percentOfNumbers.value = "";
// add num1 to List1
List1.push(num1Parsed.value);
num1Parsed.value = "";
// add num2 to List2
List2.push(num2Parsed.value);
num2Parsed.value= "";
}
</script>
</head>
<body>
<input id="numString1" type="text" name="input1" value="" />
<input id="numString2" type="text" name="input2" value="" />
<input id="inputField" type="button" name="search" value="compute" onClick="getTextInput();" />
</body>
</html>
答案 0 :(得分:1)
num1
和num2
变量不包含字符串,它们包含DOM元素。
使用value
属性从输入字段中获取值:
var num1 = document.getElementById("numString1").value;
var num2 = document.getElementById("numString2").value;
但是,数字没有value
属性。你想推动数字本身:
List1.push(num1Parsed);
List2.push(num2Parsed);
旁注:使用parseInt
时指定基数,因为使用基数8而不是10来解析具有前导零的数字:
num1Parsed = parseInt(num1, 10);
num2Parsed = parseInt(num2, 10);