2011-06-07 50 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);