2016-08-13 51 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

啊哈谢谢。这使得一切都更清晰! –