Javascript减去罚款,添加失败

时间:2012-03-12 16:07:25

标签: javascript jquery web

我有一个由很多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天,即与昨天按钮相反)

对我来说似乎很奇怪

5 个答案:

答案 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;