1

我正在这样做:

  var dDate = document.getElementById('<%= date.ClientID %>').value;
              alert(dDate); // 2013/08/14
              dDate = dDate.replace("-", "/");
              dDate = dDate.replace("-", "/");
              var Date = new Date(dDate);  // JAVASCRIPT ERROR HERE...
              alert(Date);

我看到了简单的示例,但不确定为什么它在这里不起作用?如果您能告诉我如何从date.ClientID.

4

5 回答 5

3

问题在这里:

          var Date = new Date(dDate);  // JAVASCRIPT ERROR HERE...

您已经使用局部变量隐藏了全局“日期”构造函数。将您的变量名称更改为其他名称,它应该会更好。

在 JavaScript 函数中,函数var体中的所有声明都“发生”,就好像它们都在顶部一样。声明的赋值部分发生在代码中实际找到声明的位置,但声明——换句话说,将命名变量添加到函数范围——发生在顶部。因此,当您尝试在初始化右侧调用“Date”构造函数时,您正在尝试使用“Date”变量的值,undefined即此时。

此外,您的.replace()电话是向后的,您不需要两个:

dDate = dDate.replace(/\//g, '-');

有些浏览器不需要这个(Firefox 可以使用斜线)。

编辑——哦,得到一个在给定日期后一天的日期很容易:

var nextDay = new Date( someDate.getTime() );
nextDay.setDate( nextDay.getDate() + 1 );
于 2013-08-01T13:34:58.300 回答
1

根本不要做var Date = new Date()。看起来您可能正在覆盖默认的 javascript Date() 对象。相反,尝试类似var date = new Date()

于 2013-08-01T13:36:29.347 回答
1

你有你的替换错误的方式。

 var dDate = document.getElementById('<%= date.ClientID %>').value;
 alert(dDate); // 2013/08/14
 dDate = dDate.replace("-", "/");
 dDate = dDate.replace("-", "/");

如果你在alert这里做了另一个,你会看到它仍然在说 2013/08/14。尝试:

 dDate = dDate.replace("/", "-");

(只需要一个)并重试。

对于您问题的第二部分,请参阅向 JavaScript 日期添加天数

 var today = new Date();
 var tomorrow = new Date();
 tomorrow.setDate(today.getDate()+1);
于 2013-08-01T13:34:44.470 回答
0

看起来您必须更改替换字符顺序:

dDate = dDate.replace("/", "-");
dDate = dDate.replace("/", "-");
于 2013-08-01T13:35:24.613 回答
0

替换应该这样完成:

dDate = dDate.replace(/\//g, "-");

于 2013-08-01T13:37:04.763 回答