2016-12-13 92 views
0

我试着根据选项它们从第一下拉列表中选择来填充一个选择(与从数组中的值)JQuery数组,通过变量访问?

我在我的函数阵列,像这样:

residential = ["R1_:_Single_Private_Dwelling","CH1_:_Self-Catering_Holiday_Unit","R2_:_Flats_or_Maisonettes_Up_to_3_floors_Purpose_Built","R3_:_Flats_or_Maisonettes_4_floors_and_over_Purpose_Built","CC7_:_Time_Share_Complex","R4_:_Houses_Converted_to_Flats_Up_to_2_Floors","R5_:_Houses_Converted_to_Flats_3_floors_and_over","MR_:_Hostel","R6_:_HMO","CC_:_Camping_Site","CC1_:_Caravan_Park","CC5_:_Chalet_Park","CC6_:_Caravan_And_Chalet_Park_","CC_:_Gypsy_Caravan_Site","XX1_:_Other"];  institutionalVal = ["MH2_:_Hospital","MH3_:_Hospital_(private)","MR1_:_(Care)_Home_for_older_people_(Over_65)","MR2_:_(Care)_home_for_adult_placements_"]; 

用户例如,从下拉列表中选择一个ID为“住宅”的例子,我想用上面的数组中的值填充第二个选择。

所以我抓住了选择的选项的ID,像这样:

var org_cat = $(this).children(":selected").attr("id"); 

所以,org_cat例如值是“住宅”,所以我想我可以只是尝试和通过这种迭代的数组被称为“住宅”

所以我通过如下数组试图循环:

$.each(org_cat, function(value) { 
    $('#area_usage') 
     .append($("<option></option>") 
      .attr("value", value) 
      .text(value)); 
}); 

,但变量“org_cat”不被视为数组。

我做错了什么,我必须告诉JQuery,它的数组不知何故?

这是我得到的错误。

TypeError: invalid 'in' operand a 
+0

org_cat不是数组,对吗? –

+0

不,我试图用它来引用一个数组] – frobak

+0

所以你有一个多选择与多个选项选择? –

回答

2

你要做的是通过使用字符串引用变量“住宅”(即一个数组)。所以,你可以有喜欢的对象:

var org_cat = $(this).children(":selected").attr("id"); // = "residential" 
var obj = 
{ 
    "residential": ["R1_:_Single_Private_Dwelling","CH1_:_Self-Catering_Holiday_Unit","R2_:_Flats_or_Maisonettes_Up_to_3_floors_Purpose_Built","R3_:_Flats_or_Maisonettes_4_floors_and_over_Purpose_Built","CC7_:_Time_Share_Complex","R4_:_Houses_Converted_to_Flats_Up_to_2_Floors","R5_:_Houses_Converted_to_Flats_3_floors_and_over","MR_:_Hostel","R6_:_HMO","CC_:_Camping_Site","CC1_:_Caravan_Park","CC5_:_Chalet_Park","CC6_:_Caravan_And_Chalet_Park_","CC_:_Gypsy_Caravan_Site","XX1_:_Other"];  institutionalVal = ["MH2_:_Hospital","MH3_:_Hospital_(private)","MR1_:_(Care)_Home_for_older_people_(Over_65)","MR2_:_(Care)_home_for_adult_placements_"]; 
} 

,并获得阵“住宅”想引用索引中的对象,如:

obj[org_cat] 

所以对jQuery的每个:

$.each(obj[org_cat], function(value) { 
    $('#area_usage') 
     .append($("<option></option>") 
      .attr("value", value) 
      .text(value)); 
}); 

或者如果您的变量“住宅”是全球性的,您可以通过窗口对象window[org_cat]而不是obj[org_cat]

+0

谢谢。我不得不将键添加到函数中,因为它只是返回键而不是值。 '.each(obj [org_cat],function(key,value)'' – frobak