あなたはいくつかのことを間違っていました。
まず、入力値を特定の時間に読み取る必要があります。たとえば、ボタンが押されたとき、入力フィールドの値が変更されたとき、または同様の状況です。あなたの場合、入力フィールドに値がなかったときに、ドキュメントが解析されるとすぐに読み取られました。
次に、結果を出力フィールドに書き込んでいません。この行var CALC3 = OUTPUT1;
は、CALC3 変数を再宣言し、それに値 OUTPUT1 を与えます。必要なのは、フィールド OUTPUT1 の値を CALC3 として設定することです
これを試して:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transititonal//EN"
""http://www.w3.org/TR/XHTML1/DTD/xhtml1-transitional.dtd">
<html>
<head></head>
<body>
<form name="TESTING">
<table border="1" width="600" height="200" cellpadding="10" cellspacing="3">
<tr><th colspan="2"><h1>TESTING</h1></th></tr>
<tr> <th><h3>INPUT</h3></th>
<th><h3>OUTPUT</h3></th> </tr>
<tr></tr>
<td><input type="number" name="INPUT1" id="input" onchange="calculate();"/></td>
<td><input type="number" name="OUTPUT1" id="output"></td>
<table>
</form>
<script type="text/javascript">
function calculate() {
var USERINPUT1 = document.TESTING.INPUT1.value;
var CALC1 = USERINPUT1/20;
var CALC2 = CALC1*.585;
var CALC3 = CALC2*.30;
document.TESTING.OUTPUT1.value = CALC3;
}
</script>
</body>
</html>
最初の入力フィールドの値が変更されると、関数 calculate() ( onchange="calculate();"
) が呼び出され、2 番目のフィールドが自動的に更新されます (値を読み取るのと同じように書き込みますdocument.TESTING.OUTPUT1.value = CALC3;
)。
[編集] コードの最初のバージョンはあなたのものとほとんど同じなので、より簡単に理解できるでしょうが、これも見てください。表の行タグの位置が間違っていたり、コードが乱雑だったりしたので、少し整理しました。ベスト プラクティスにはまだほど遠いですが、ページの改良版です
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<form name="TESTING">
<table border="1" width="600" height="200" cellpadding="10" cellspacing="3">
<tr>
<th colspan="2">
<h1>TESTING</h1>
</th>
</tr>
<tr>
<th>
<h3>INPUT</h3>
</th>
<th>
<h3>OUTPUT</h3>
</th>
</tr>
<tr>
<td>
<input type="number" name="INPUT1" id="input" onchange="calculate();"/>
</td>
<td>
<input type="number" name="OUTPUT1" id="output">
</td>
</tr>
</table>
</form>
<script type="text/javascript">
function calculate() {
var USERINPUT1 = document.TESTING.INPUT1.value,
RESULT = (USERINPUT1/20) * .585 * .30;
document.TESTING.OUTPUT1.value = RESULT;
}
</script>
</body>
</html>