document.フォーム名.エレメント名.valueと数字

[新着] Webテンプレートを仮オープンしました



0   名前: ど素人 : 2007/04/20(金) 10:40  ID:GbzExMgv sub-.G
初めまして、JavaScript初心者のど素人です。

掲題の件ですが、四則演算は可能でしょうか?
下記に作り途中のサンプルを示します。

---------------------------------------------------------*
<html>
<head><title>アップダウンコントローラ</title>
<SCRIPT language="JavaScript">
function tasu(a,b){
document.frmSample.txtInput.value = a + b;
}
</SCRIPT>
</head>
<body>
<form name="frmSample">
<INPUT TYPE="text" NAME="txtInput" VALUE="2" SIZE="10">
<INPUT NAME="button" TYPE="button" VALUE="<<"
onClick="tasu(document.frmSample.txtInput.value,-1)">
<INPUT NAME="button" TYPE="button" VALUE="o"
onClick="document.frmSample.txtInput.value = 0">
<INPUT NAME="button" TYPE="button" VALUE=">>"
onClick="tasu(document.frmSample.txtInput.value,1)">
</form>
</body>
</html>

------------------------------------------------------------*

上記のソースは、ボタンをクリックすることによりテキストボックスの値に
+1又は、-1して、再びテキストボックスにその演算結果を返すことを目的と
したものです。
上記の通りボタンをクリックした時に
「tasu(document.frmSample.txtInput.value,1)」にてテキスト値に+1
しようとしているのですが、加算されずに連結した結果がテキストボックスに
返されてしまいます。

例:
テキスト値:0
結果表示:01


申し訳御座いませんが、どなたかアドバイスの程、宜しくお願い致します。

1   名前: 匿名 : 2007/04/20(金) 10:40  ID:bo0ommWT sub-Cz
> document.フォーム名.エレメント名.value

ノンノンノン
document.forms['フォーム id'].elements['コントロール name'].value

省略記法より正式記法で覚えよう。その方が応用が効く。

そして、value 値は必ず文字列だ。数値計算したければ数値に変換しる。

2   名前: ど素人 : 2007/04/20(金) 10:40  ID:GbzExMgv sub-.G
匿名さん>

欧米かっ…一応、お約束の突っ込みをさせてもらいました。

掲題の件ですが、おかげさまで解決しました。
有難う御座います。

何分HNの通りのど素人なもので、再び質問させて頂く事が
多々あるかと思いますが、その時はまたアドバイスの程、
宜しくお願い致します。

3   名前: 匿名 : 2007/04/20(金) 10:40  ID:2dE/SVzT sub-Cz
補足と言うか、

JavaScript には暗黙の型変換というルールがあるザマス。数字(文字列)の四則演算は以下のようになる。

・数字 + 数字 -> 数字の文字列連結
・数字 - 数字 -> 数字を数値に変換し、計算する
・数字 * 数字 -> 数字を数値に変換し、計算する
・数字 / 数字 -> 数字を数値に変換し、計算する

だから、実は加算以外ではちゃんと計算される。まあしかし、こんなルールを覚えるのも面倒だから、数値変換するのが無難かもしれない。

# それとも、最初に型変換ルールを頭に叩き込んだ方が良いか…?どっちが効率的な学習になるだろう。

一覧へ戻る