在函数中使用javascript var - 订单问题

时间:2016-09-29 15:53:56

标签: javascript jquery

我的javascript顺序存在问题,我确信这很容易:

我想检查变量是什么(使用if语句),然后从另一个var或txt文件中的值设置它

到目前为止,我可以加载文件,并设置var(我可以在控制台中成功检查)

然而,脚本的后面部分不等待设置var,因此不使用var,导致var“cleanTradeDate”的错误

我的问题是,以下是正确的还是应该以不同方式构造var。如何让后续代码等待/使用“cleanTradeDate”值?

以下是代码示例:

var URLTradeDate = document.URL.substring(document.URL.search('tradeDate=') + 10, document.URL.search('tradeDate=') + 22);
var cleanTradeDate;
$(document).ready(function () {
if (URLTradeDate == '') {
    $.get('data/0.max_trade_date.txt', function(maxTradeDate) {
        cleanTradeDate = maxTradeDate.replace(/[\n\r]+/g, '');
    });
} else {
    cleanTradeDate = URLTradeDate;
}

$("#datepicker").datepicker({dateFormat: 'yy-mm-dd'});
$("#datepicker").datepicker('setDate', cleanTradeDate);
});

2 个答案:

答案 0 :(得分:2)

这不是声明变量的地方,而是it's filled asynchronously。你最好使用承诺:

monday

答案 1 :(得分:0)

$ .get是异步的(意味着代码在继续之前不会等待它完成),所以你想要更像的东西:

var URLTradeDate = document.URL.substring(document.URL.search('tradeDate=') + 10, document.URL.search('tradeDate=') + 22);
$(document).ready(function () {
    if (URLTradeDate == '') {
        $.get('data/0.max_trade_date.txt', function(maxTradeDate) {
            setTradeDate(maxTradeDate);
        });
    } else {
        setTradeDate(URLTradeDate);
    }
});

function setTradeDate(tradeDate){
    tradeDate = tradeDate.replace(/[\n\r]+/g, '');
    $("#datepicker").datepicker({dateFormat: 'yy-mm-dd'});
    $("#datepicker").datepicker('setDate', tradeDate);
}

这样一旦从$ .get收到数据,你就可以调用一个函数' setTradeDate'设置日期选择器。

编辑:在setTradeDate函数中移动了maxTradeDate的格式并修复了我注意到的一些错误。