2011-06-07 55 views
0

不知道我的問題是什麼。我試圖在「放置訂單」字段中顯示日期,並將其計入「總計」字段中。沮喪,我可以使用一些幫助。收到NaN錯誤並且沒有日期輸出

<html> 
<head> 
<title>My Order Form</title> 
<!-- Modified by: --> 
<!-- This web page should display the current date in the txtDate 
    textbox on the form as well as calculate the order total and display 
    in the txtTotal textbox on the form. --> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> 
<script language="javascript" type="text/javascript"> 
<!-- hide from old browsers 
function enterDate() { 
//reads, formats, then displays the current date in the txtDate textbox on the order form 
    var myDate = new Date(); 
    var myMonthNum = myDate.getMonth(); 
    var myDay = myDate.getDay(); 
    var myYear = myDate.getYear(); 

    var monthNames = new Array() 
    monthNames[0] = "Jan"; 
    monthNames[1] = "Feb"; 
    monthNames[2] = "Mar"; 
    monthNames[3] = "Apr"; 
    monthNames[4] = "May"; 
    monthNames[5] = "Jun"; 
    monthNames[6] = "Jul"; 
    monthNames[7] = "Aug"; 
    monthNames[8] = "Sep"; 
    monthNames[9] = "Oct"; 
    monthNames[10] = "Nov"; 
    monthNames[11] = "Dec"; 

    var myMonth = monthNames[myMonthNum]; 

    var myNiceDate = myMonth + " " + myDay + ", " + myYear; 

    document.frmOrder.txtDate.value = myNiceDate; 
} 

function enterTotal (quantity, price) { 
    //calculates the price for each item, adds to existing totals, then displays in the txtTotal textbox 
    var myTotal = parseInt(window.document.frmOrder.txtTotal); 
    myTotal += (quantity * price); 
    window.document.frmOrder.txtTotal.value = myTotal; 
} 
// --> 
</script> 
</head> 

<body onLoad="enterDate(); window.document.frmOrder.txtWidget.focus()"> 
<h1 align="center">Totally Useless Parts</h1> 
<h2 align="center">Order Form</h2> 
<hr> 
<form action="mailto:[email protected]" method="post" 
     enctype="text/plain" name="frmOrder" id="frmOrder"> 
    <table width="100%" border="0" cellspacing="0" cellpadding="5" 
     summary="Contains the form elements for the order form"> 
    <tr valign="top"> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td><div align="right"></div></td> 
     <td><div align="right">Order Placed: 
      <input name="txtDate" type="text" id="txtDate"/> 
     </div></td> 
    </tr> 
    <tr valign="top"> 
     <td>Item</td> 
     <td>Quantity</td> 
     <td>&nbsp;</td> 
     <td>Mail To: </td> 
    </tr> 
    <tr valign="top"> 
     <td>Widgets </td> 
     <td><input name="txtWidget" type="text" id="txtWidget" size="4" 
       onChange="enterTotal(document.frmOrder.txtWidget, 4.99)"/> 
     (@ $4.99 each)</td> 
     <td>&nbsp;</td> 
     <td rowspan="5"><textarea name="txaAddress" cols="50" rows="6" id="txaAddress"></textarea></td> 
    </tr> 
    <tr valign="top"> 
     <td>Gizmos</td> 
     <td><input name="txtGizmo" type="text" id="txtGizmo" size="4" 
       onChange="enterTotal(document.frmOrder.txtGizmo.value, 2.50)"/> 
(@ $2.50 each) </td> 
     <td>&nbsp;</td> 
    </tr> 
    <tr valign="top"> 
     <td>Thing-a-ma-jigs</td> 
     <td><input name="txtThing" type="text" id="txtThing" size="4" 
       onChange="enterTotal(document.frmOrder.txtThing.value, 0.95)"/> 
(@ $0.95 each) </td> 
     <td>&nbsp;</td> 
    </tr> 
    <tr valign="top"> 
     <td colspan="2"><hr></td> 
     <td>&nbsp;</td> 
    </tr> 
    <tr valign="top"> 
     <td align="right">Total:</td> 
     <td>$ 
     <input name="txtTotal" type="text" id="txtTotal" value="0" onChange="enterTotal()"/> 
     (US) </td> 
     <td>&nbsp;</td> 
    </tr> 
    </table> 
</form> 
</body> 
</html> 
+0

下面的代碼: – Anna 2011-06-07 03:18:31

+0

縮進你的代碼由四個空格(選擇它的按下工具欄上的'{}'按鈕)! – deceze 2011-06-07 03:19:57

+0

使用類似firebug的東西來調試你的代碼,並檢查你的變量是否正確。當你處理JavaScript時,這真的很有幫助 – 2011-06-07 03:29:45

回答

0

我看到的一個問題是mydate用於獲取myDay;它應該是myDate(區分大小寫)

還有其他許多錯誤。也許你應該使用DOM來從表單中獲取所有值,每次更改,否則應用程序將不會健壯。

正如Jayantha所說,使用Firebug,我也推薦Firefox的錯誤控制檯。它將有助於確定Javascript錯誤。

+0

Oop!這有幫助!它最後顯示日期..然而它說年是111,最後我檢查了我們沒有回到1900年。 – Anna 2011-06-07 03:26:14

+0

嗯..也說這是第一。 – Anna 2011-06-07 03:26:53

0

getDay()返回表示周1天的整數6

getYear()返回年份減去1900年已被棄用。改爲使用getFullYear()

所以,你可以做這樣的事情

var myDate = new Date(), 

    days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 
      'Thursday', 'Friday', 'Saturday'], 

    months =["Jan","Feb","Mar","Apr","May", "Jun", 
      "Jul","Aug","Sep","Oct","Nov","Dec"], 

    myNiceDate = months[myDate.getMonth()] + " " + 
       days[myDate.getDay()] + ", " + 
       myDate.getFullYear(); 

console.log(myNiceDate);