みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

テキストボックスの値で配列の値を求めるには?

やりたいと思っているのは、
(1) "INPUT" の値を入力。
(2) "koteichi" は他からの参照値。
(3) "goukei"に(1)と(2)の合計値。
(4) "total" に(3)の値に該当する配列の値。
(実際には配列の値を代入した式の答え。)
という流れになります。
(3)まではなんとか分かるのですが、
(4)はどのように配列の値を代入すればいいのかが
分かりません。

 なにぶん最近始めた初心者なので不規則な値は配列を使えばいいと解釈したのですが、まったく使い方を間違えているのでしょうか?
こういった場合は別のやり方があるのでしょうか?
どなたかよろしくお願いします。
<SCRIPT language=JavaScript1.1>
<!--
rank = new Array(6);
rank[0]=0;
rank[1]=5;[rank2]=8;[rank3]=12;rank[4]=16;rank[5]=22;

function calc(){
document.myform.goukei.innerText = eval(document.myform.INPUT.value) +eval(document.myform.koteichi.value);

}

// -->
</SCRIPT>
</HEAD>
<BODY>
<form name="myform">
<INPUT size="20" type="text" name="INPUT" value="0" onchange="calc()"/>+<INPUT size="20" type="text" name="koteichi" value="10">=<INPUT size="20" type="text" name="goukei" value="0">
<INPUT size="20" type="text" name="total" value="0">
</FORM>
</BODY>

投稿日時 - 2008-02-18 07:31:21

QNo.3786285

困ってます

質問者が選んだベストアンサー

提示された条件ですとこんな感じ?

<SCRIPT language="JavaScript">
function calc(){
var rank={1:"5%",2:"8%",3:"12%",4:"16%",5:"22%"};
var v=parseFloat(document.getElementById('myform').INPUT.value) + parseFloat(document.getElementById('myform').koteichi.value)
document.getElementById('myform').goukei.value = v;
document.getElementById('myform').total.value = rank[v]?rank[v]:0;
}
window.onload=calc;
</SCRIPT>
</HEAD>
<BODY>
<form id="myform">
<INPUT size="20" type="text" name="INPUT" value="0" onchange="calc()" />+<INPUT size="20" type="text" name="koteichi" value="10" readonly />=<INPUT size="20" type="text" name="goukei" value="" readonly />
<INPUT size="20" type="text" name="total" value="0">
</FORM>
</BODY>

この例だとINPUT欄に-9~-5までの数字をいれると、指定の%が表示されます。
それ以外は0です。
仕様がちがうようでしたら補足してください

投稿日時 - 2008-02-18 17:08:25

お礼

まさにこれです。
これをしたかったんです!!
あぁ、"koteichi" value="10"は1の間違いでした^ ^;
タイプミスで悩ませてしまって申し訳ありませんでした;;
初心者の解り難い質問にわざわざお付き合いいただいて
本当にありがとうございました。

投稿日時 - 2008-02-18 17:56:31

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>(4) "total" に(3)の値に該当する配列の値。

が理解できません。
唐突に表記されているrankをどうにかしたいようなのですが、
具体的になにをしたいのでしょうか?

それといままでのスクリプトは多少問題がありそうなので
こんな風にしてみてください。

<SCRIPT language="JavaScript">
function calc(){
document.getElementById('myform').goukei.value = parseFloat(document.getElementById('myform').INPUT.value) + parseFloat(document.getElementById('myform').koteichi.value);
}
window.onload=calc;
</SCRIPT>
</HEAD>
<BODY>
<form id="myform">
<INPUT size="20" type="text" name="INPUT" value="0" onchange="calc()" />+<INPUT size="20" type="text" name="koteichi" value="10" readonly />=<INPUT size="20" type="text" name="goukei" value="" readonly />
<INPUT size="20" type="text" name="total" value="0">
</FORM>
</BODY>

投稿日時 - 2008-02-18 09:40:00

補足

修正ありがとうございます。
勉強になりました。

例えば"goukei"で求めた値が5ならrank=[5]の値である22%を
"total"での計算に使いたいと思っています。
(計算式は上記ではややこしくなるので省いています。)
"goukei"の数字は分類で使用している値で、1ランク2ランク
3ランクと、それに対応して5.8.12%...と不規則に増えて
いきます。
その為ランク数の入力・加算をして、その指数である%を
求めるのにArrayを用いては?と思ったのですが...。
使い方まったく間違えているでしょうか??
何かこうした場合に適したやり方があれば、ご教授よろしくおねがいします。
なお、ランクの入力・確認が必須の状況です。

投稿日時 - 2008-02-18 12:06:36