2014-03-26 22 views
0

我一直在試圖讓這個代碼執行。我是一名初學者,正在用簡單的例子練習HTML/Javascript。有人能告訴我這段代碼有什麼問題嗎?簡單日期差異代碼

<html> 
    <body> 
    <script language="javascript"> 
    function dateDiff() 
    { 
     var f1, f2, d1, d2, one_day, diff; 
     f1=document.getElementById("f1"); 
     f2=document.getElementById("f2"); 
     d1=new Date(f1); 
     d2=new Date(f2); 
     one_day=1000*60*60*24; 
     diff=Math.ceil((d1.value()-d2.value())/(one_day)); 
     alert 
     { 
     ("The difference is" +diff.value()+ "days"); 
     } 
    } 
    </script> 
    <form> 
    <input type=date name=f1 id=f1> 
    <input type=date name=f2 id=f2> 
    <input type=button name=f3 value="Get Difference" onclick="dateDiff"> 
    </form> 
    </body> 
</html> 
+0

你會得到什麼錯誤?你傳遞給'new Date()'什麼值?將日期字符串解析爲Date構造函數是出了名的錯誤。 – RobG

+0

那麼@RobG,我試圖從表單輸入並傳遞給新的Date()。而且,我沒有得到任何錯誤。你看,我只是用記事本和鉻。 – user3462370

+0

我認爲這是一個範圍問題。你在一個元素上調用alert(),但它需要在窗口範圍內調用。請參閱:http://javascript.info/tutorial/binding –

回答

1

除了可能與日期解析字符串的錯誤,你必須:

alert 
{ 
("The difference is" +diff.value()+ "days"); 
} 

警報是一個方法,所以不應該有名字和參數列表之間的塊,和DIFF的值是一個數字,沒有一個方法,嘗試:

alert("The difference is" + diff + "days"); 

你可能已經被告知,基元被強制爲如果需要計算表達式時的對象,所以你可以做:

var a = 4; 
alert(a.valueOf()); // 4 

爲了顯示的價值警報將調用的toString從而有效地與調用的valueOf並coverting爲字符串:

alert(a.toString()); // 4 
+0

我試過了。但是,我仍然一無所獲。 – user3462370

1

試試這個:

<html> 
    <body> 
     <script language="Javascript" type="text/Javascript"> 
     function dateDiff() 
     { 
      var f1, f2, d1, d2, one_day, diff; 
      f1=document.getElementById("f1").value; // .value to get value of input text. 
      f2=document.getElementById("f2").value; // .value to get value of input text. 

      d1=new Date(f1); 
      d2=new Date(f2); 
      one_day=1000*60*60*24; 
      diff=Math.ceil((d1-d2)/(one_day)); // d1-d2 but not d1.value()-d2.value() 
      alert("The difference is" +diff+ "days"); // alert the difference of d1 and d2 by diff but not diff.value(). 
     } 
     </script> 
     <form> 
      <input type=date name=f1 id=f1> 
      <input type=date name=f2 id=f2> 
      <input type=button name=f3 value="Get Difference" onclick="dateDiff()"> 
     </form> 
    </body> 
</html>