0

私はこのコードを持っています。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<input onclick="result.value = m1*m2; m1.value = (+m1.value -1);" type="button" id="minus1" value="minus" />
<input onclick="result.value = m1*m2; m1.value = (+m1.value +1);" type="button" id="plus1" value="plus" />
<input type="textbox" id="m1" value="1" />
<br />
<input onclick="result.value = m1*m2; m2.value = (+m2.value -1);" type="button" id="minus2" value="minus" />
<input onclick="result.value = m1*m2; m2.value = (+m2.value +1);" type="button" id="plus2" value="plus" />
<input type="textbox" id="m2" value="1" />
<br />
<br />
Result :<input type="textbox" id="result" />
</body>
</html>

+ または - ボタンを変更するたびに NaN 値を取得するのはなぜですか?

4

2 に答える 2

5

あなたは掛けてm1*m2います。次を使用する必要がありますm1.value*m2.value

一部のブラウザーでm1は、idm1自体を持つ要素を返します。ただし、掛けたいのは単なる値なので、m1.value.

編集された HTML:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
    </head>
    <body>
        <input onclick="result.value = m1.value*m2.value; m1.value = (+m1.value -1);" type="button" id="minus1" value="minus" />
        <input onclick="result.value = m1.value*m2.value; m1.value = (+m1.value +1);" type="button" id="plus1" value="plus" />
        <input type="textbox" id="m1" value="1" />
        <br />
        <input onclick="result.value = m1.value*m2.value; m2.value = (+m2.value -1);" type="button" id="minus2" value="minus" />
        <input onclick="result.value = m1.value*m2.value; m2.value = (+m2.value +1);" type="button" id="plus2" value="plus" />
        <input type="textbox" id="m2" value="1" />
        <br />
        <br />Result :
        <input type="textbox" id="result" />
    </body>
</html>

私が提案するなら、onclickイベントで関数を使用する必要があります。物事がより明確になり、保守が容易になり、入力の数値が有効かどうかなど、さらにチェックを追加できます。以下の例を参照してください。

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
        <script type="text/javascript">
            function update(inputToChange, changeValue) {
                var parsedValue = parseFloat(inputToChange.value);
                if (isNaN(parsedValue)) {
                   alert(inputToChange.value+' is not a a valid number.');
                }
                else {
                   result.value = m1.value * m2.value;
                   inputToChange.value = parsedValue + changeValue;
                }
            }
        </script>
    </head>
    <body>
       <input onclick="update(m1, -1)" type="button" id="minus1" value="minus" />
       <input onclick="update(m1, 1)" type="button" id="plus1" value="plus" />
       <input type="textbox" id="m1" value="1" />
       <br />
       <input onclick="update(m2, -1)" type="button" id="minus2" value="minus" />
       <input onclick="update(m2, 1)" type="button" id="plus2" value="plus" />
       <input type="textbox" id="m2" value="1" />
       <br />
       <br />Result :
       <input type="textbox" id="result" />
    </body>
</html>

ここでデモを確認してください

于 2013-06-26T11:38:21.797 に答える
1

m1*m2その値ではなく、テキストボックスのIDである使用があります。

使用:result.value = m1.value*m2.value代わりにresult.value = m1*m2;

于 2013-06-26T11:43:50.777 に答える