我正在使用具有多个高级对象的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的位置(Christmas_List)尝试文字值,则循环正常工作。
有什么想法吗?感谢
答案 0 :(得分:10)
你是说你的情况是这样的吗?
$(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 :(得分:2)
我不完全确定你在这里要做什么,但是,你的示例代码看起来很尴尬,所以也许这样的东西就是你要找的答案:
activeList = []
$(select+":selected").each( function(item) {
activeList.append( $(item).val() )
});
这将创建一个:所选值的列表。如果没有,请澄清问题。
答案 2 :(得分:1)
$()。val()返回找到的第一个值,如果你想将它作为一个数组,你必须自己遍历选定的输入