###前提・実現したいこと
javascriptでとあるゲームのダメージ計算をするプログラムを書いているのですが、
以下のようなことができると非常に便利であります。
- inputタグに入力された文字を変数名として扱う方法
あるキャラクターがいて、そのキャラクターの能力を配列で管理しています
例えばキャラクター名’CharaA'がいてその能力を var CharaA=[100,200,300]で管理します。
仮にこのキャラクターの300の部分の能力を表示したいとして
console.log(CharaA[2]) とすると300が表示されます。
今回inputタグがあるとして、そこにCharaAと入力し
これを console.log(input.value[2])のように表したいです。
もちろんinputタグにCharaAの名前を入力すると CharaAの二番目の文字aが返ってきます。
私の意図通りにするにはどうしたらよいのでしょうか。
//
//
//
- 以下の3つの変数がありこれらを関数の引数を使い表示させたい。
var attack= 200
var defence = 100
var hp = 500
イメージとしては
function func(val){
console.log(val)
}
func(attack) //200が表示
func(defence) //100が表示
func(hp) //500が表示
別の変数を介したり幾つか試したのですがうまく汎用性があるものを作れません。
変数についての知識が足りないのはわかりきっているのですが、ここで質問させていただきます。
(追記)
オブジェクトを使ってうまくいきました。
<!DOCTYPE html> <html lang="ja"> <meta charset="utf-8"> <body> <p>キャラクターの名前を入力してください</p> <input id="inp"></input> <button onclick=func()>クリック</button> <p> chara1 = {attack: 200, defence: 100, hp: 500};<br> chara2 = {attack: 300, defence: 200, hp: 600};<br> chara3 = {attack: 400, defence: 300, hp: 700}; </p> <script> var inp=document.getElementById('inp') var chara_1={attack: 200, defence: 100, hp: 500}; chara_2={attack: 300, defence: 200, hp: 600}; chara_3={attack: 400, defence: 300, hp: 700}; var character={ chara1 : chara_1, chara2 : chara_2, chara3 : chara_3 }; function func(){ console.log(character[""+inp.value+""]) } </script> </body></html>
回答3件
あなたの回答
tips
プレビュー