2013-11-14 30 views
0

我非常新的HTML和JavaScript,并正尝试一门功课的任务。发现最大点击

有具有两个字段,其中用户输入的数字,和一个按钮的形式。按下按钮时,应显示两个数字的最大值。

正因为如此,输出为NaN,但我不知道为什么。我已经通过chrome调试器运行了它,并且在行var1 = parseInt(var1);上,var1的值为NaN。下一行也是如此。

如果我像下面这样替换var1 = parseInt("6");每一行,这种情况不会发生,一切都按预期(尽管很显然没有做什么,我需要)。

任何想法我做错了什么?

<html> 
<head> 
    <title> Question 2 </title> 
    <script> 
    function larger(var1,var2) { 
    var1 = parseInt(var1); 
    var2 = parseInt(var2); 
    var max = var1>var2 ? var1 : var2; 
    return max; 
    } 
    </script> 
</head> 
<body> 
    <form> 
     <label>First number:</label> <input type="text" name="num1"/><br/> 
     <label>Second number:</label> <input type="text" name="num2"/><br/> 
     <input type="button" value="Compute" onclick="myResult.value=larger(num1,num2)"/> 
     <input type="text" name="result" id="myResult"/> 
    </form> 
</body> 
</html> 
+1

定义了“num1”和“num2”的哪个位置? –

回答

3
<body> 
    <form> 
     <label>First number:</label> <input type="text" name="num1"/><br/> 
     <label>Second number:</label> <input type="text" name="num2"/><br/> 
     <input type="button" value="Compute" onclick="myResult.value=larger()"/> 
     <input type="text" name="result" id="myResult"/> 
    </form> 
</body> 

function larger() {  
    var1 = parseInt(document.getElementsByName('num1')); 
    var2 = parseInt(document.getElementsByName('num2')); 
    var max = var1>var2 ? var1 : var2; 
    return max; 
} 
+2

由于OP只是学习JS,所以如果你用你所做的描述来填充你的问题,这将会有所帮助。 – Andy

+0

总是在发布的代码中添加一些描述是个不错的主意。 –

+0

谢谢,这实际上对我来说很明显。但是,如果你想添加一些说明我不会抱怨;) – rbennett485

0

你的功能鸵鸟政策从HTML获取值。你不需要参数化你的功能。您可以读取您的功能内的值,如:

var1 = document.getElementById('someId'); 

并添加一个id =“someId” - 标记到您的输入字段。

+0

但是文本框没有id。他们需要通过名字获取。 :) –

+0

是的,这是另一种选择;) – pDiller

0

你正在做的大错:因为你调用函数是这样的:onclick="myResult.value=larger(num1,num2)"

这是不正确的,因为如果你想获得的num1num2值,则需要使用JavaScript方法document.getElementsByName

在你的情况下,你可以使用:

var num1Value = document.getElementsByName(num1); 
var num2Value = document.getElementsByName(num2); 

document.getElementsByName

第二件事,你用parseInt()方法,用于分析字符串并返回一个整数。

ParseInt()

0

如下

function larger(var1,var2) { 
    var1 = document.getElementsByName("num1"); 
    var2 = document.getElementsByName("num2"); 
    var max = var1>var2 ? var1 : var2; 
    return max; 
    } 
-1

由于getElementsByName()返回节点的阵列可以更改的功能。因此,您必须通过以下方法获取文本框的值:

<body> 
    <form> 
     <label>First number:</label> <input type="text" name="num1"/><br/> 
     <label>Second number:</label> <input type="text" name="num2"/><br/> 
     <input type="button" value="Compute" onclick="myResult.value=larger()"/> 
     <input type="text" name="result" id="myResult"/> 
    </form> 
</body> 
<script> 
    function larger() { 
     var1 = parseInt(document.getElementsByName("num1")[0].value); 
     var2 = parseInt(document.getElementsByName("num2")[0].value); 
     var max = var1>var2 ? var1 : var2; 
     return max; 
    } 
</script>