JavaScript:将变量插入数组

JavaScript: Insert variable into an array

本文关键字:插入 数组 变量 JavaScript      更新时间:2023-09-26

我正在定制一个插件,该插件具有保存配置项的数组(如果是数组的话):

        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'
}​

更改此行:

var eventdata = jsonObject.tlall;

对此:

config.source = jsonObject.tlall;

并从您的配置定义中删除这一行:

source: eventdata,

我不知道您计划如何使用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​​​​​​​​​​​​​​​​

范围界定问题,请尝试:

$(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'
    }
});​
​