正如您所看到的,我创建了三个对象,每个对象都有不同的数组。
var redmeat = {options: ["beef", "steak", "kangaroo"]},
whitemeat = {options: ["chicken", "turkey"]},
fish = {options: ["salmon", "tuna"]};
然后,在HTML中,我创建了一个选择字段,其中包含三个相应的选项。
<select name="meat-type">
<option value="redmeat">Red meat</option>
<option value="whitemeat">White meat</option>
<option value="fish">Fish</option>
</select>
现在,每当用户选择该字段时,我希望能够在我的控制台中显示正确的数组。 (例如,当选择红肉时,控制台将记录&#34;牛肉&#34;,&#34;牛排&#34;,&#34; kangaroo&#34;。)
$('select[name=meat-type]').change(function(){
var e = $("select[name=meat-type] option:selected").val();
function updatefield (e){
console.log(e); //this works, easy.
f = e.options; //but this doesn't work, return as undefined
console.log(f);
};
updatefield(e);
});
所以问题是;我该如何调用该对象?
答案 0 :(得分:3)
首先,您需要修改对象并将其放入单个对象中。
之后,您可以轻松调用对象键并获取其值。
var meatObj = {
redmeat: ["beef", "steak", "kangaroo"],
whitemeat: ["chicken", "turkey"],
fish: ["salmon", "tuna"]
};
$('select[name=meat-type]').change(function(){
console.log(meatObj[this.value]);
});
以上代码的fiddle
答案 1 :(得分:2)
不是声明这些变量,而是构建一个对象:
var meats = {
redmeat: {options: ["beef", "steak", "kangaroo"]},
whitemeat: {options: ["chicken", "turkey"]},
fish: {options: ["salmon", "tuna"]}
};
然后:
f = meats[e].options;
答案 2 :(得分:0)
对于我生病的迟到回复感到抱歉,谢谢你的所有答案,但我正在寻找的那种答案是eval方法。
所以我要做的就是......
f = eval(e); //and then...
g = f.options;
完成!