関数 数値化?
-
0 名前: 匿名希望 : 2006/02/21 00:40
- はじめまして。JavaScriptで困っています。
Scriptの先輩方、教えてください。
まず、私が困っている内容は、
計算を行って一度出力したものを
再び、UP関数で1加えるという計算をし、
出力を上書きするというところです。
一度出力するところまでは正常に動くのですが、
UP関数を使うときに+1ずつ足していくときに
「5」→「8」にしたいとします。
しかし、「5」→「5111」
となってしまいます。
=================================
function UP_A(){
if(document.ABI.abilityA.value > 0) {
document.ABI.ability1.value = document.ABI.ability1.value + 1;
document.ABI.abilityA.value = document.ABI.abilityA.value - 1;
}
if(document.ABI.abilityA.value > 20) {
document.ABI.ability2.value = document.ABI.ability2.value - 1;
document.ABI.ability3.value = document.ABI.ability3.value - 1;
}
}
function UP_B(){
if(document.ABI.abilityB.value > 0) {
document.ABI.ability2.value = document.ABI.ability2.value + 1;
document.ABI.abilityB.value = document.ABI.abilityB.value - 1;
}
}
==================================
<table border=1>
<form name="ABI">
<td>
A
</td>
<td>
<input type=text size=10 name=ability1>
</td>
<td>
A+
</td>
<td>
<input type=text size=10 name=abilityA>
</td>
<td>
<input type="button" value="UP" onclick="UP_A()">
</td>
<tr>
<td>
B
</td>
<td>
<input type=text size=10 name=ability2>
</td>
<td>
B+
</td>
<td>
<input type=text size=10 name=abilityB>
</td>
<td>
<input type="button" value="UP" onclick="UP_B()">
</td>
<tr>
<td>
<input type="button" value="計算" onclick="keisan()">
</td>
</td>
</form>
</table>
-
1 名前: m035 : 2006/02/21 00:40 [URL]
- document.ABI.ability1.value = document.ABI.ability1.value + 1;
document.ABI.ability1.valueが1のとき
document.ABI.ability1.value = 1 + 1;
ではなく、
document.ABI.ability1.value = "1" + 1;
となって、文字列+数値は数値を文字とみなし、
document.ABI.ability1.value = "1"+"1";
と同じ結果になるわけです。
これら(フォーム内の数値)が文字列として扱われているために起こります。
document.ABI.ability1.value++;
document.ABI.ability1.value--;
とすればインクリメント/デクリメント(対象は数値)なので数値として変換されるのでうまく行くはず。
または、
document.ABI.ability1.value=eval(document.ABI.ability1.value)+1;
document.ABI.ability1.value=eval(document.ABI.ability1.value)-1;
とする。
こうすると、1は数値として確実に加算されます。
evalで文字列が数値として扱われますから、数値に変換できるわけです。
-
2 名前: 匿名希望 : 2006/02/21 00:40
- できました!
evalを用いることで数値とみなすのですね。
また、+1、−1の場合は
++、−−で表記できることを知り、
大変勉強になりました。
ご丁寧に初心者でも分かりやすい説明を
ありがとうございました!