2013-04-30 77 views
0

所以我有一個循環創建9個獨特的按鈕,具有唯一的ID號和唯一標題。這些按鈕打開與複選框的模式窗口,我一直保存複選框數據到1陣列。剛剛意識到我的錯誤,我需要知道如何循環並創建9個獨特命名的數組。創建多個獨特的數組jQuery

當前代碼:

$('.roleBtn').click(function() { 
    roleName = $(this).html();  /* Get role name */ 
    role_ID = $(this).attr('id');  /* Get role id */ 
    row_Name = ('row-'+role_ID);  /* Create Row Name */ 
    blueBtn = ('blue-btn-'+role_ID) /* Create Blue Button */ 
    var str = $(this).attr('id');  
    substr = str.split ('role-'); 
    the_Num = substr[1];    /* Get the role ID and split to save number in the_Num */ 
    modal_ID = ('modal-'+the_Num); /* Now get the associated modal number */ 
    genreAry = [];     /* My Array, I need to make 9 of these */ 

基本上我有換每個創建9個按鈕,並增加了作用環的XSL - (+號)的id。然後我可以通過jQuery獲取按鈕和#ids的內容。

<xsl:for-each select="$TalentUser/item"> 
    <li class="roleBtn" id="role-{position()}"> 
     <xsl:value-of select="sc:fld('title',.)" /> 
    </li> 
</xsl:for-each> 

我怎麼也找不到正確命名每一個新的磁盤陣列,你將如何獲取/創建以下文件:

genreAry1 = []; 
genreAry2 = []; 
genreAry3 = []; 

UPDATE工作代碼THX到@Don McCurdy


我的XSL 放置一個javascript函數來獲取創建的按鈕數(在我的ca SE 9)

<div id="talent-gender"> 
    <ul> 
     <!-- For Each to get Talent Roles --> 
     <xsl:for-each select="$TalentUser/item"> 
      <li class="roleBtn" id="role-{position()}"> 
       <xsl:value-of select="sc:fld('title',.)" /> 
      </li> 
     </xsl:for-each> 
     <script type="text/javascript">createRoleGenreArrays();</script> 
    </ul> 
</div> 

jQuery的 全局變量

var array_of_arrays = []; 
var object_with_arrays = {}; 
var num_role_leon = 0; 

的createRoleGenreArrays功能捕獲(9)

function createRoleGenreArrays() { 

    for (i = 0; i < numRoleAry_leon.length; i++) { 
     array_of_arrays.push([]); 
     object_with_arrays['genreAry'+i] = []; /* creates 9 arrays named genreAry1, genreAray2 ... */ 
     console.log(i); 
    } 
} 

然後最後用我的不同陣列

$('.doneButton').click(function() { 

    role_ID = role_id_saved_leon; 

    var ary_Num = the_Num - 1; // <-- need to do this 

$('.simplemodal-data input:checked').each(function (i) { 
     alert($(this).attr('value')); 
     object_with_arrays['genreAry'+ary_Num].push($(this).attr('value')); 

     //alert($(this).attr('value')); 
    }); 
最終循環數目
+0

您在這裏設置全局變量,是否預期? – 2013-04-30 15:24:27

+0

我有gloabl變量,但是這個點擊函數實際上是另一個函數的內部,這就是我當前的變量所在的地方:)我一直在使用全局變量來保存點擊一個新按鈕時發生變化的數據。我意識到這個問題,也正在查找如何使用jQuery對象來存儲我的所有數據。 – 2013-04-30 15:36:50

+0

在循環外創建allArrays = {},並設置allArrays [「genreAry」+ the_Num]而不是數組文字。 – dandavis 2013-04-30 15:37:07

回答

2

您是否問如何創建任意數量的數組而無需手動爲每個數組構造變量名?如果是這樣,我會考慮給他們一個封裝對象或數組,以使事情變得更簡單。

var 
    i, 
    n = 9, 
    array_of_arrays = [], 
    object_with_arrays = {}; 

for (i = 0; i < n; i++) { 
    array_of_arrays.push([]); 
    object_with_arrays['genreAry'+i] = []; 
] 

上面的代碼將會給你這樣的兩種不同的方式:

[ [], [], [], ... ] 
{ genreAry1: [], genreAry2: [], ... } 
+0

您將如何訪問,推入並從這些「對象」數組中檢索值?例如, – 2013-04-30 15:58:43

+0

object_with_arrays.genreAry1.push(...)。或object_with_arrays ['genreAry'+ i] .push(...)如果你需要在循環中做到這一點。通過調用object_with_arrays.genreAry1 [index]來檢索值。 – 2013-04-30 16:04:27

+0

謝謝!仍然試圖讓這個工作現在... – 2013-04-30 16:26:41

0

如果您需要一系列的(數字索引)陣列,那麼你應該使用...

... a 二維陣列

+0

難怪這是如此難以弄清楚,現在閱讀這個http://www.exforsys.com/tutorials/javascript/javascript-two-dimensional-arrays.html會回來這個問題後,thx! – 2013-04-30 15:58:04

+0

編輯該文章並沒有真正的幫助,它讓我知道發生了什麼,但我需要一些真實生活的例子,仍然試圖讓唐的答案工作 – 2013-04-30 16:26:17