0

私は HTML と JavaScript にかなり慣れていないので、宿題をしようとしています。

ユーザーが数字を入力する 2 つのフィールドとボタンを備えたフォームがあります。ボタンを押すと、2 つの数値の最大値が表示されます。

そのまま出力は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

あなたはここで非常に間違っています:あなたは次のように関数を呼び出すからです:onclick="myResult.value=larger(num1,num2)"

num1との値を取得したい場合はnum2、javascript method を使用する必要があるため、正しくありません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 に答える
0

関数は HTML から値を取得しません。関数をパラメータ化する必要はありません。次のように関数内の値を読み取ることができます。

    var1 = document.getElementById('someId');

入力フィールドに id="someId"-Tag を追加します。

于 2013-11-14T13:15:42.773 に答える
-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 に答える