2016-08-13 37 views
0

最初のラジオボタンをクリックしようとしていますが、変数distSelectedとweaponにオブジェクトengDistanceObjectの値を割り当てます。私はHTMLが正しく書かれないかもしれないと思っています...特に入力タグ。Javascript関数が正しく呼び出されません

https://jsfiddle.net/Natronox/sbojaxm4/#&togetherjs=zb80KxkQzm

var engDistanceObject = { 
short: ["100m-300m","416 Assault Rifle"], 
long: ["300m-1000m","M110 DMR"] 
}; 

var distSelected; 
var weapon; 

function distanceClick(item){ 
distSelected = engDistanceObject.item[0]; 
weapon = engDistanceObject.item[1]; 
console.log(distSelected,weapon); 
}; 
+0

がコメントアウトものは、この問題には必要ありませんのでご注意ください –

答えて

0

代わりにアイテムのあなたの短期および長期のプロパティを使用してください。オブジェクトにアイテムプロパティ名がありません。

.short [0]

.short [1]

+0

はい、入力タグで、私は 'onclick = "distanceClick(short)"'を渡します。アイテムが短くなるわけではないので、engDistanceObject.short。[0]にアクセスしますか? –

+0

私がこれを行うのは、2番目のラジオボタンの長いプロパティを選択できるからです。 –

+0

やり方は矛盾します。オブジェクトを関数に渡しますが、オブジェクトには2つのプロパティがあります。どのプロパティが項目を参照していますか? –

0

動的プロパティにアクセスするには、.構文を使用することはできません。アクセスしようとしているプロパティと同じ名前の変数を無視し、存在しないitemプロパティにアクセスしようとします。

代わりに、ブラケット構文[]を使用して、文字列を使用して動的プロパティにアクセスすることができます。これは、関数にパラメータとして文字列を渡す必要があることを意味します。

onclick="distanceClick('long')" 

をそしてあなたのJSにブラケットの構文を使用します:

あなたのHTMLイベントハンドラは、パラメータを引用符で囲む必要があります。

function distanceClick(item){ 
    distSelected = engDistanceObject[item][0]; 
    weapon = engDistanceObject[item][1]; 
    console.log(distSelected, weapon); 
} 
+0

ああ、ありがとう。これにより、すべてがはっきりと分かります。 –

関連する問題