JavaScript:将变量插入数组中

时间:2012-08-23 06:20:18

标签: javascript jquery arrays variables

我正在自定义一个包含数组的插件(如果就是这样),它包含配置项:

        var config = {
            width:  "100%",
            height: "100%",
            source: 'js/timeline/test.json',                
            css:    'js/timeline/compiled/css/timeline.css',    
            js:     'js/timeline/compiled/js/timeline-min.js'   
        }

我想要做的是获取source:数据并将其替换为变量,例如:

var mysource = 'path/to/source.json';

var config = {
                width:  "100%",
                height: "100%",
                source: mysource ,              
                css:    'js/timeline/compiled/css/timeline.css',    
                js:     'js/timeline/compiled/js/timeline-min.js'   
            }

但如上所述它不起作用。谁能指出我正确的方向?感谢

编辑:按要求添加完整代码

$(function() {

    $.getJSON('http://www.mysite.com/json.php',

    function(data) {

        jsonObject = eval(data);
        var eventdata = jsonObject.tlall;

    });

}); //END ON LOAD

var config = {
    width: "100%",
    height: "100%",
    source: eventdata,
    //source: 'js/timeline/test.json',
    //start_at_end: true,   //OPTIONAL              
    //hash_bookmark: true,  //OPTIONAL              
    css: 'js/timeline/compiled/css/timeline.css',
    js: 'js/timeline/compiled/js/timeline-min.js'
}​

3 个答案:

答案 0 :(得分:2)

更改此行:

var eventdata = jsonObject.tlall;

对此:

config.source = jsonObject.tlall;

从配置定义中删除此行:

source: eventdata,

答案 1 :(得分:1)

确定范围问题,请尝试:

$(function() {
    $.getJSON('http://www.mysite.com/json.php', function(data) {
        config.source = data.tlall;
    });

    var config = {
        width: "100%",
        height: "100%",
        css: 'js/timeline/compiled/css/timeline.css',
        js: 'js/timeline/compiled/js/timeline-min.js'
    }
});​
​

答案 2 :(得分:1)

我不知道你打算如何使用config,但你肯定需要它在相同的范围内才能访问eventdata。我会说完全摆脱它,只是将它添加为ajax回调中对象的属性(如下面的代码所示)。

这里的困难在于,在脚本中使用config之前,您将无法等待AJAX​​回调触发;这就是为什么ajax被设计用于在特定事件之后执行的回调而不是线性的;我建议您仅在成功回调中使用config,或添加一项检查以查看getJSON是否已完成执行。

$(function() {

    var config = {
        width: "100%",
        height: "100%",            
        css: 'js/timeline/compiled/css/timeline.css',
        js: 'js/timeline/compiled/js/timeline-min.js'
    };

    $.getJSON('http://www.mysite.com/json.php', function(data) {
        jsonObject = eval(data);
        config.source = jsonObject.tlall;
    });

}); //END ON LOAD​​​​​​​​​​​​​​​​