2013-11-24 222 views
0

此代碼正在讀取數組名稱的第一個字母,但我希望它讀取該數組中的第一個對象。 它應該讀取一個元素數組屬性(它會),然後訪問該數組中的第一個東西。 這是我第一次使用陣列,所以這可能是一個非常愚蠢的問題:)動態訪問Javascript數組

謝謝堆。

//array of strategies 
//leads 
var leads = new Array(); 
leads[0] = "Test 1"; 
leads[1] = "Test 2"; 
leads[2] = "Test 3"; 

$("button").click(function() { 
    //get category 
    var currentCat = $(this).attr("array"); 
    $("#danWell h1").text($(this).attr('id')); //don't worry about this line 
    $("#danWellContent").text(currentCat[0]); 
}) 
+2

你有一個工作Plunk或JSFiddle嗎?沒有更多的代碼很難說你的問題是什麼。 –

+0

'$(this).attr(「array」);'???直接在你的問題中提供完整的代碼示例。 「領導」如何適應你的情況? –

+0

'currentCat'將會是一個屬性的值,它只能是一個字符串。陣列進入它的位置在哪裏? – Quentin

回答

1

我猜你的問題是,你有一個字符串,你從一個屬性檢索,你想訪問你的JavaScript的變量與該名稱。這通常通過使用object[varName]來完成,其中varName是一個JavaScript變量,這使您可以訪問該變量中名稱幫助的對象上的屬性。

如果您要訪問的變量是一個全局變量,那麼你可以通過字符串通過索引斷開window對象來訪問它,因爲所有的全局變量是window對象的屬性:

var currentCat = $(this).attr("array"); 
var item = window[currentCat][0]; 

如果你想訪問的變量不是一個全局變量,那麼你需要使它成爲某個已知對象的一個​​屬性,所以你可以使用這種相同的技術。

var myObject = {}; 
myObject.leads = []; 
myObject.leads[0] = "Test 1"; 
myObject.leads[1] = "Test 2"; 
myObject.leads[2] = "Test 3"; 

var currentCat = $(this).attr("array"); 
var item = myObject[currentCat][0]; 

僅供參考,建議的方式來存儲自定義您的HTML屬性的前面加上"data-"自定義屬性,然後你可以使用jQuery的.data()檢索自定義屬性,你也將與兼容自定義屬性的HTML5規範。

<div data-array="leads"> 

var currentCat = $(this).data("array"); 
+0

這工作。非常感謝。 我現在將我的數組存儲在一個對象中,我可以輕鬆訪問它! 我現在也在使用數據數組,感謝提示! –

1

它看起來像你想存儲一個數組作爲你的元素的屬性之一。我建議您使用.data()而不是屬性來讀取和寫入數組值。這可以防止添加多餘的屬性,並允許您使用正確的類型檢索數據。

若要存儲陣列(其中$ele指的是你的jQuery元素):

var array = []; 
array[0] = "Test"; 
array[1] = "Test"; 
$ele.data("array", array); 

要檢索數組:

var array = $ele.data("array"); 

如果您存儲陣列作爲元素的data-array屬性,上面的呼叫.data()的工作原理完全相同。