2016-08-13 5 views
0

Ich versuche, auf den ersten Radio-Button klicken und es wird Variablen distSelected und Waffe einige Werte aus dem Objekt engDistanceObject zuweisen. Ich vermute, dass mein HTML möglicherweise nicht korrekt geschrieben wird ... insbesondere die Eingabe-Tags.Javascript-Funktion nicht richtig aufgerufen

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

Bitte beachten Sie die Kommentar gesetzt Sachen für dieses Problem nicht notwendig ist, –

Antwort

0

Verwenden Sie Ihre kurze und lange Eigenschaften statt Punkt. Sie haben keinen Objekteigenschaftsnamen in Ihrem Objekt.

.Kurze [0]

.Kurze [1]

+0

Ja, aber im Eingabe-Tag übergebe ich 'onclick = "distanceClick (kurz)"'. Bedeutet das nicht, dass Item kurz wird ... und daher auf engDistanceObject.short. [0] zugreift? –

+0

Grund, dass ich das tun, ist, weil Sie in der Lage sein werden, die lange Eigenschaft auf dem zweiten Optionsfeld auszuwählen –

+0

Die Art, die Sie es tun, wird einen Konflikt verursachen. Sie übergeben das Element an die Funktion, aber Ihr Objekt hat zwei Eigenschaften. Auf welche Eigenschaft bezieht sich das Element? –

0

dynamischen Eigenschaften zuzugreifen, können Sie nicht die . Syntax. Es ignoriert Variablen, die möglicherweise denselben Namen wie die Eigenschaft haben, auf die Sie zugreifen möchten, und versucht stattdessen, auf die nicht vorhandene item-Eigenschaft zuzugreifen.

Verwenden Sie stattdessen die Klammer-Syntax [], mit der eine Zeichenfolge für den Zugriff auf dynamische Eigenschaften verwendet werden kann. Dies bedeutet, dass Sie eine Zeichenfolge als Parameter an Ihre Funktion übergeben müssen.

Ihre HTML-Event-Handler müssen Anführungszeichen um die Parameter:

onclick="distanceClick('long')" 

Und dann die Klammer-Syntax in Ihrem JS verwenden:

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

Ahhh danke. Das macht alles viel klarer! –

Verwandte Themen