【问题标题】:JavaScript: Insert variable into an arrayJavaScript:将变量插入数组
【发布时间】:2012-08-23 06:20:17
【问题描述】:

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

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

【问题讨论】:

  • 是不是因为前面有2个逗号?
  • @nbrooks 对不起,我在抄写代码时犯了一个错误。问题依然存在
  • 我没有发现任何问题!你有他们在同一个块/功能?
  • 如何“重新初始化”插件以使用您的自定义配置?
  • 顺便说一句,这不是一个数组,它是一个对象,或者键:值对的列表。类似于其他语言的字典。有时称为哈希或映射...

标签: javascript jquery arrays variables


【解决方案1】:

改变这一行:

var eventdata = jsonObject.tlall;

到这里:

config.source = jsonObject.tlall;

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

source: eventdata,

【讨论】:

    【解决方案2】:

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

    这里的困难在于,您必须等待 AJAX 回调触发,然后才能在脚本中使用 config;这就是为什么 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​​​​​​​​​​​​​​​​
    

    【讨论】:

    • 谢谢!这已经摆脱了我未捕获的引用错误
    【解决方案3】:

    范围问题,试试:

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

    【讨论】:

    • 我不确定这是否可行,因为 eventdata 仅在 AJAX 调用返回时才被分配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多