2016-08-13 89 views
0

我試圖點擊第一個單選按鈕,它將分配變量distSelected並從對象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

用你的短期和長期性的,而不是項目。您的對象中沒有項目屬性名稱。

。短路[0]

。短路[1]

+0

是的,但在輸入標籤中,我傳遞'onclick =「distanceClick(short)」'。這是不是意味着項目變短...因此訪問engDistanceObject.short。[0]? –

+0

我這樣做的原因是因爲您將能夠在第二個單選按鈕上選擇長屬性 –

+0

您這樣做的方式將導致衝突。您將項傳遞給函數,但您的對象有兩個屬性。項目指的是哪個屬性? – 2016-08-13 01:31:11

0

要訪問的動態屬性,則不能使用.語法。它會忽略與您嘗試訪問的屬性名稱相同的變量,而是嘗試訪問不存在的item屬性。

而是使用括號語法[],它允許使用字符串來訪問動態屬性。這意味着你需要將一個字符串作爲參數傳遞給你的函數。

你的HTML事件處理程序將需要引號的參數:

onclick="distanceClick('long')" 

然後用括號語法在您的JS:

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

啊哈謝謝。這使得一切都更清晰! –