我有一个由很多PHP和Jquery / javascript组成的网页
我有一个在点击提交按钮时运行的功能
$("#yesterday").click(function(){
var $date = $.datepicker.parseDate('yymmdd','<?php echo $_POST['date']; ?>');
var julDate = $.datepicker.formatDate('yyoo',new Date($date));
Number(julDate);
julDate = julDate - 1;
String(julDate);
var $date = $.datepicker.parseDate('yyoo',julDate);
var julDate = $.datepicker.formatDate('yymmdd',new Date($date));
var $longDate = $.datepicker.formatDate('DD MM d, yy',new Date($date));
$("#date").val(julDate);
$("#longdate").val($longDate);
$("#orwell_btn").click();
return false;
});
此函数完美地工作,它将日期减少1并重新加载页面并执行我的SQL查询返回所有正确的信息
如果我更改第五行并使函数设为这样:
$("#tomorrow").click(function(){
var $date = $.datepicker.parseDate('yymmdd','<?php echo $_POST['date']; ?>');
var julDate = $.datepicker.formatDate('yyoo',new Date($date));
Number(julDate);
julDate = julDate + 1;
String(julDate);
var $date = $.datepicker.parseDate('yyoo',julDate);
var julDate = $.datepicker.formatDate('yymmdd',new Date($date));
var $longDate = $.datepicker.formatDate('DD MM d, yy',new Date($date));
$("#date").val(julDate);
$("#longdate").val($longDate);
$("#orwell_btn").click();
return false;
});
函数没有完成,我的页面加载但好像它会在第一次加载时(我有逻辑处理它但它应该提前1天,即与昨天按钮相反)
对我来说似乎很奇怪
答案 0 :(得分:6)
Number(julDate)
返回一个带有解析值的数字
它实际上并没有改变任何东西。
因此,julDate + 1
是字符串连接。
您想要julDate = Number(julDate)
。
答案 1 :(得分:4)
Number(julDate);
对julDate
AFAIK没有任何作用。也许你的意思是julDate = Number(julDate);
?
答案 2 :(得分:2)
这是一个简单的输入问题。当你添加/减去1时,你的julDate
仍然是一个字符串(因为Number(
将返回一个你从不分配的值 - 但不转换传递的变量)。当您减去类型转换为数字时,-
只能对数值执行。然而,+
也可用于连接字符串,因此会将您的变量视为字符串。
请参阅此小提琴以澄清:http://jsfiddle.net/wRbwX/1/
您需要做的就是将字符串转换为数字(例如,通过执行parseInt
)并且它应该正常工作
答案 3 :(得分:1)
那是因为
string - int - &gt;尝试将字符串解析为int,然后减去
string + int - &gt;将int转换为string,然后追加。所以,如果你有一个月的“3”,你最终得到“31”
答案 4 :(得分:0)
更改为:
julDate = Number(julDate);
julDate =julDate +1;