Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript getDate()在添加和删除日期时未正确调整日期_Javascript_Asp.net - Fatal编程技术网

JavaScript getDate()在添加和删除日期时未正确调整日期

JavaScript getDate()在添加和删除日期时未正确调整日期,javascript,asp.net,Javascript,Asp.net,我有一个JavaScript函数,可以在单击按钮时调整日期。它使用getDate函数并从文本框中的当前日期值中减去7天。我看到的问题,我已经尝试了各种方法来纠正,但似乎没有任何效果,当我点击按钮时,它会显示正确的日期,当我再次点击按钮时,它会跳到一个完全不同的日期——例如,如果文本框中的日期是2014年1月5日,我点击按钮,它将转到2014年12月29日,我再次点击它,我将得到2015年11月28日,而不是2014年12月22日 以下是我的JavaScript代码: var fromDat

我有一个JavaScript函数,可以在单击按钮时调整日期。它使用getDate函数并从文本框中的当前日期值中减去7天。我看到的问题,我已经尝试了各种方法来纠正,但似乎没有任何效果,当我点击按钮时,它会显示正确的日期,当我再次点击按钮时,它会跳到一个完全不同的日期——例如,如果文本框中的日期是2014年1月5日,我点击按钮,它将转到2014年12月29日,我再次点击它,我将得到2015年11月28日,而不是2014年12月22日

以下是我的JavaScript代码:

   var fromDateIn = new Date(formatDate(document.getElementById('<%= txtFromDate.ClientID%>').value));
      var newdate = new Date(fromDateIn);
      newdate.setDate(newdate.getDate() - 7);
      var nd = new Date(newdate);

      document.getElementById('<%= txtFromDate.ClientID%>').value = formatDate(nd);

     function formatDate(inputDate) {

      var d = new Date(inputDate || Date.now()),
    month = '' + (d.getMonth() + 1),
    day = '' + d.getDate(),
    year = d.getFullYear();

      if (month.length < 2) month = '0' + month;
      if (day.length < 2) day = '0' + day;

      return [day, month, year].join('/');

  }
有人能告诉我如何从文本框中的当前日期值中连续减去7天吗


谢谢

您的问题是您正在使用格式化的日期构造新的fromDateIn

初始化加载时的值,并使用newdate变量进行计算,在单击按钮时调用函数changeDate

var fromDateIn = new Date(formatDate(document.getElementById('<%=txtFromDate.ClientID%>').value));
var newdate = new Date(fromDateIn);

function changeDate() 
{
   newdate.setDate(newdate.getDate() - 7);
   document.getElementById('<%= txtFromDate.ClientID%>').value = formatDate(newdate);
}

function formatDate(inputDate) 
{        
   var d = new Date(inputDate || Date.now()),
   month = '' + (d.getMonth() + 1),
   day = '' + d.getDate(),
   year = d.getFullYear();

   if (month.length < 2) month = '0' + month;
   if (day.length < 2) day = '0' + day;        
   return [day, month, year].join('/');        
}

在您的示例中,输入字符串中有月份的前一天。构造函数希望月份早于日期的日期。也许这就是问题的一部分。您好,很抱歉回复延迟,但是您能告诉我在javascript中从哪里设置fromDateIn值吗?如果我创建了一个Init函数,那么日期值将不存在,并且changedate无法访问该值?请将脚本块放在页面末尾,或者使用window.onload或$document.ready(如果使用jQuery)