2012-03-12 62 views
0

我已經做了很多的PHP和jQuery/JavaScript代碼的網頁的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查詢returnning所有正確的信息

如果我改變了第五行,使功能liek這樣:

$("#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

我也試圖消除'$( 「#orwell_btn」)點擊()。 '行並用'alert(julDate)替換它';如果我再次將明天按鈕函數修改爲-1,它就不會顯示警告框,它與昨天的按鈕一樣,它似乎是其失敗的附加在 – ScottC 2012-03-12 16:10:55

+0

+ 1做什麼? + 1秒或+ 1天? – Schwarzie2478 2012-03-12 16:17:15

+0

哇錯誤的菜鳥...應該已經注意到我正在調用一個函數,以沒有任何地方 – ScottC 2012-03-12 16:18:50

回答

6

Number(julDate)返回一個帶有解析值的數字。
它實際上並沒有改變任何東西。

因此,julDate + 1是字符串連接。

你想要julDate = Number(julDate)

4

Number(julDate);不會對julDate AFAIK做任何事情。也許你的意思是?

+0

這樣的3位數字,爲什麼工作,它會自動將字符串轉換爲帶有 - 符號的數字? – ScottC 2012-03-12 16:12:03

+0

@ScottC:是的。歡迎來到Javascript類型強制的精彩世界。 – SLaks 2012-03-12 16:13:14

+0

同樣,'+ x'會自動強制爲一個數字。 – SLaks 2012-03-12 16:13:39

2

這是一個簡單的打字問題。當你添加/減1時,你的julDate仍然是一個字符串(因爲Number(將返回一個值 - 你永遠不會分配 - 但不會轉換傳遞的變量)。當你減去類型轉換爲數字時,-只能在數值上執行。然而,+也可以用來連接字符串,因此會像字符串一樣處理您的變量。

看到這個搗鼓澄清:http://jsfiddle.net/wRbwX/1/

所有你需要做的是你的字符串轉換爲數字(做parseInt爲例),它應該是工作

1

這是因爲

串 - int - >試圖解析字符串爲int,然後減去

string + int - >將int轉換爲字符串,然後追加。所以,如果你有 「3」 個月,你結束了 「31」

0

變化:

julDate = Number(julDate); 
julDate =julDate +1;