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>
4

5 回答 5

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;
}
于 2013-11-14T13:12:44.963 回答
0

您的函数没有从 HTML 中获取值。你不需要参数化你的函数。您可以读取函数内部的值,例如:

    var1 = document.getElementById('someId');

并在您的输入字段中添加一个 id="someId"-Tag。

于 2013-11-14T13:15:42.773 回答
0

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

这是不正确的,因为如果要获取 and 的值num1,则num2需要使用 javascript 方法document.getElementsByName

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

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

document.getElementsByName

第二件事,您使用parseInt()用于解析字符串并返回整数的方法。

ParseInt()

于 2013-11-14T13:17:06.830 回答
0

您可以按如下方式更改功能

function larger(var1,var2) {
    var1 = document.getElementsByName("num1");
    var2 = document.getElementsByName("num2");
    var max = var1>var2 ? var1 : var2;
    return max;
    }
于 2013-11-14T13:17:43.617 回答
-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>
于 2013-11-14T13:34:24.217 回答