2013-12-22 140 views
-1

如何从动态创建的JSON元素中获取值。下面的例子。我想知道是否有办法从以前的元素'顶部'使用一些JavaScript的价值。 (如果请更新标题的不正确或误导)从javascript中获取JSON变量的值

Following this example on jsfiddle

var info = [ 
{ 
    src: "http://dummyimage.com/55x80/0d0.png/fff", 
    pos: { 
    top: 93, 
    left: 70 
    }, 
    rotate: -10, 
    zIndex: 3 
}, 
{ 
    src: "http://dummyimage.com/55x80/d00.png/fff", 
    pos: { 
    top: previousElement(top) + some dynamic value added at run time, 
    left: 70 
    }, 
    rotate: 0, 
zIndex: 2 
}, 
] 

回答

1

我不会这样做,您可以根据索引计算它。

但是......如果你坚持:

假设你的阵列是一个JS文字(而不是JSON,这是不同的),你可以使用一个简单的计数器。

使用事实赋值返回所分配的值(这是种丑陋虽然):

var top = 93; 
var info = [ 
{ 
    src: "http://dummyimage.com/55x80/0d0.png/fff", 
    pos: { 
    top: top, 
    left: 70 
    }, 
    rotate: -10, 
    zIndex: 3 
}, 
{ 
    src: "http://dummyimage.com/55x80/d00.png/fff", 
    pos: { 
    top: top = top + (some dynamic value added at run time), 
    left: 70 
    }, 
    rotate: 0, 
zIndex: 2 
}   //... keep doing top = top + sometDynamicValue on all elements 
] 

甲多种分离的示例可能是:

var c = 0,  
    arr = [ 
     {a:c = c + 5}, 
     {a:c = c + 5}, 
     {a:c = c + 5}, 
     {a:c = c + 5}, 
     {a:c = c + 5}, 
    ] 

其与创建对象的数组增加5 a财产。

+0

你有一个很好的JavaScript的书基于这个问题建议我问? –

+0

@java_dude如果你已经知道另一种编程语言,那么道格拉斯克罗克福德的“好的部分”是坚实的,否则John Resig(jQuery名人堂)在可汗学院有一个很好的系列讲座,你可以开始:) –

1

我想知道是否有办法使用一些JavaScript

摆脱前一个元素“顶”的值

info是一个数组,因此您需要做的就是索引它,然后访问prop对象,即

var prevTop = info[someIndex].pos.top; 
1

没有简单的语法从Javascript中的数组字面值中的前一个元素获取值。您必须通过索引来引用它,如下所示:

pos: { 
    top: info[0].pos.top + value 
    left: 70 
}, 
0

试试这个功能:

function DoOffset(data, offset) 
{ 
    for (var i = 1; i < data.length; i++) 
    { 
     data[i].pos.top = data[i - 1].pos.top + offset; 
    } 
} 
0

您可以遍历信息阵列,以改变值:

for(var i = 1, len = info.length; i < len; i++) { 
    info[i].pos.top = info[i - 1].pos.top + newValue; 
}