我的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);
});
答案 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的格式并修复了我注意到的一些错误。