2009-12-15 72 views
0

我正在使用具有多個高級對象的JSON數據集。如果我從字面上聲明對象名稱,則可以毫無困難地循環瀏覽JSON,但是當我在其位置使用變量時,會出現錯誤。它似乎試圖將變量名稱作爲對象的字面名稱。這裏有一個簡單的例子

function(data){ 
    var select = $('#lists select'); 
    var activeList = $(select+':selected').val(); 

    $.each(data.activeList, function(i,item){ 
     // Do stuff  
    }); 
} 

我如何得到它在這種情況下使用activeList的值?要清楚,變量activeList正確返回所選選項的值。如果activeList的值是「Christmas_List」,則循環遍歷data.activeList應循環遍歷JSON數據中的Christmas_List對象。這不起作用,看起來data.activeList正在尋找「activeList」對象。如果我在activeList的位置(聖誕節列表)嘗試一個字面值,則循環正常工作。

任何想法?由於

+1

2個問題:哪裏是'select'得到界定?另外,你認爲你可以用'.each'迭代從val()返回的值是多少? – 2009-12-15 19:13:04

+0

你得到了什麼樣的錯誤? – 2009-12-15 19:13:34

+0

select只是一個指向選擇下拉列表的變量。對不起,我沒有澄清。 activeList成功返回下拉列表的選定值。我已將相關代碼添加到問題中。 我收到了指向jQuery庫的錯誤「G is undefined」。這是我在嘗試遍歷JSON數據中不存在的對象時得到的錯誤。 – SDG 2009-12-15 19:50:40

回答

8

你的意思是你有一種情況是這樣選擇的輸入有循環的第一個值?

$(function() { 
    var test = { Foo : [ 1, 2, 3], Bar : [4, 5, 6] }; // Your JSON object 
    var prop = "Foo"; //Your select list value 
    $.each(test[prop], function() { alert(this); }); 
}); 

在這種情況下,要通過重點訪問對象....

test[prop] 

,而不是直接

test.prop; 
1

我不能完全肯定你想在這裏做什麼,但是,您的示例代碼看起來很笨拙,所以也許這樣的事情是你正在尋找一個答案是什麼:

activeList = [] 
$(select+":selected").each(function(item) { 
    activeList.append($(item).val()) 
}); 

這將創建:選定值的列表。如果沒有,請澄清這個問題。

+0

我真的沒有提供足夠的信息。 activeList返回選擇下拉列表的選定值。 activeList的值將對應於我希望循環的JSON對象。 – SDG 2009-12-15 20:01:25

1

$()。VAL()返回找到,如果你想把它當作一個數組,你將通過自己

+0

activeList變量返回我想要的值 - 選定選項的值。該值與JSON數據中對象的名稱相對應 - 我想循環訪問相應的對象。問題是,當我嘗試循環訪問data.activeList時,它似乎試圖循環訪問不存在的activeList對象,而不是使用activeList的值。 – SDG 2009-12-15 20:12:40