Javascript for循环行为,每次迭代输出相同的结果

Javascript for循环行为,每次迭代输出相同的结果,javascript,loops,for-loop,scope,Javascript,Loops,For Loop,Scope,我承认我是一个JS新手,并且来自PHP背景,我对范围的想法显然与Javascript不同 // There's a date set, so begin processing var original_date = new Date($('input#tour_encoded_dates').val()); var date_search_string = ''; var day_limit = 14; var timestamp = ''

我承认我是一个JS新手,并且来自PHP背景,我对范围的想法显然与Javascript不同

// There's a date set, so begin processing
var original_date       = new Date($('input#tour_encoded_dates').val());
var date_search_string  = ''; 
var day_limit           = 14;
var timestamp           = '';

// Go forwards day_limit days
for(var i = 0; i < day_limit; i++) {
    timestamp = strtotime('+'+i+' days', original_date);
    calculated_date = new Date(timestamp).format('Y-m-d');
    date_search_string += calculated_date + ' ';
}

console.log(date_search_string);
//有一个日期集,所以开始处理
var original_date=新日期($('input#tour_encoded_dates').val());
变量日期搜索字符串=“”;
风险值日上限=14;
var时间戳=“”;
//向前推进天数\限制天数
对于(var i=0;i<日限制;i++){
时间戳=STROTIME(“+”+i+“天”,原始日期);
计算日期=新日期(时间戳)。格式('Y-m-d');
日期搜索字符串+=计算日期+“”;
}
日志(日期搜索字符串);
console.log()
的输出是:

2013-10-10-10 2013-10-10 2013-10-10 2013-10-10-10 2013-10-10 2013-10-10 2013-10-10-10 2013-10-10-10 2013-10-10-10-10 2013-10-10-10-10 2013-10-10-10-10 2013-10-10-10

我本以为每次迭代都会将日期增加一天,但它们保持不变

作为参考,如果我将循环的最后一行更改为
date\u search\u string+=timestamp+“”输出如下:

1381363200000 1381363286400 1381363372800 1381363459200 1381363545600 13813632000 1381363718400 1381363804800 1381363891200 1381363977600 1381364064000 1381364150400 1381364236800 1381364323200

因此,问题显然与
计算日期
变量有关-对吗

有人能解释一下正确的方法吗?谢谢。

每个时间戳之间有86400(即1/1000天)


您的计算(在
strotime
中)就像时间戳是秒,但它们是毫秒一样。

JS strotime函数的代码是什么?什么是
天限制
?那是电话号码吗?如果是数组,则需要使用
day\u limit.length
来获取数组中的内容数。
original_date
是否在
day_limit
内?@IlyaBursov我已经更新了代码以确保清晰。我刚刚检查了你的时间戳:-2013-10-10是正确的结果…请给我们strotime代码,问题是它的99%,OP正在使用,它期望时间戳以秒为单位,然后乘以1000,计算,然后除以1000再返回。