获取订单详细信息的javascript for循环
我想在这个nopcart.js文件中放置一个for循环,以便将订单的详细信息保存为字符串。此时,它正在将订单的所有详细信息输出到一个表中,以显示签出页面。我只需要阵列信息获取订单详细信息的javascript for循环,javascript,html,loops,for-loop,Javascript,Html,Loops,For Loop,我想在这个nopcart.js文件中放置一个for循环,以便将订单的详细信息保存为字符串。此时,它正在将订单的所有详细信息输出到一个表中,以显示签出页面。我只需要阵列信息 fields = new Array; fields[0] = database.substring( 0, Token0 ); // Product ID fields[1] = database.substring( Token0+1, Token1
fields = new Array;
fields[0] = database.substring( 0, Token0 ); // Product ID
fields[1] = database.substring( Token0+1, Token1 ); // Quantity
fields[2] = database.substring( Token1+1, Token2 ); // Price
fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description
fields[4] = database.substring( Token3+1, Token4 ); // Shipping Cost
fields[5] = database.substring( Token4+1, database.length ); //Additional Information
循环并保存为一个字符串。然后将所有订单详细信息保存在一个字符串上,然后用php将其保存到文本文件中。(我们目前不使用SQL
到目前为止,我的尝试只得到购物车中的最后一个项目,或者循环也在编写html表代码。这是用于uni分配的,我们不打算编辑基本购物车功能,但我认为将客户和订单详细信息保存到文本文件中会更有用
//---------------------------------------------------------------------||
// FUNCTION: CheckoutCart ||
// PARAMETERS: Null ||
// RETURNS: Product Table Written to Document ||
// PURPOSE: Draws current cart product table on HTML page for ||
// checkout. ||
//---------------------------------------------------------------------||
function CheckoutCart( ) {
var iNumberOrdered = 0; //Number of products ordered
var fTotal = 0; //Total cost of order
var fTax = 0; //Tax amount
var fShipping = 0; //Shipping amount
var strTotal = ""; //Total cost formatted as money
var strTax = ""; //Total tax formatted as money
var strShipping = ""; //Total shipping formatted as money
var strOutput = ""; //String to be written to page
var bDisplay = true; //Whether to write string to the page (here for programmers)
var strPP = ""; //Payment Processor Description Field
iNumberOrdered = GetCookie("NumberOrdered");
if ( iNumberOrdered == null )
iNumberOrdered = 0;
if ( TaxByRegion ) {
QueryString_Parse();
fTax = parseFloat( QueryString( OutputOrderTax ) );
strTax = moneyFormat(fTax);
}
if ( bDisplay )
strOutput = "<TABLE CLASS=\"nopcart\"><TR>" +
"<TD CLASS=\"nopheader\"><B>"+strILabel+"</B></TD>" +
"<TD CLASS=\"nopheader\"><B>"+strDLabel+"</B></TD>" +
"<TD CLASS=\"nopheader\"><B>"+strQLabel+"</B></TD>" +
"<TD CLASS=\"nopheader\"><B>"+strPLabel+"</B></TD>" +
(DisplayShippingColumn?"<TD CLASS=\"nopheader\"><B>"+strSLabel+"</B></TD>":"") +
"</TR>";
for ( i = 1; i <= iNumberOrdered; i++ ) {
NewOrder = "Order." + i;
database = "";
database = GetCookie(NewOrder);
Token0 = database.indexOf("|", 0);
Token1 = database.indexOf("|", Token0+1);
Token2 = database.indexOf("|", Token1+1);
Token3 = database.indexOf("|", Token2+1);
Token4 = database.indexOf("|", Token3+1);
fields = new Array;
fields[0] = database.substring( 0, Token0 ); // Product ID
fields[1] = database.substring( Token0+1, Token1 ); // Quantity
fields[2] = database.substring( Token1+1, Token2 ); // Price
fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description
fields[4] = database.substring( Token3+1, Token4 ); // Shipping Cost
fields[5] = database.substring( Token4+1, database.length ); //Additional Information
fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) );
fShipping += (parseInt(fields[1]) * parseFloat(fields[4]) );
if ( !TaxByRegion ) fTax = (fTotal * TaxRate);
strTotal = moneyFormat(fTotal);
if ( !TaxByRegion ) strTax = moneyFormat(fTax);
strShipping = moneyFormat(fShipping);
if ( bDisplay ) {
strOutput += "<TR><TD CLASS=\"nopentry\">" + fields[0] + "</TD>";
if ( fields[5] == "" )
strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + "</TD>";
else
strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>";
strOutput += "<TD CLASS=\"nopentry\">" + fields[1] + "</TD>";
strOutput += "<TD CLASS=\"nopentry\">"+ MonetarySymbol + moneyFormat(fields[2]) + "/ea</TD>";
if ( DisplayShippingColumn ) {
if ( parseFloat(fields[4]) > 0 )
strOutput += "<TD CLASS=\"nopentry\">"+ MonetarySymbol + moneyFormat(fields[4]) + "/ea</TD>";
else
strOutput += "<TD CLASS=\"nopentry\">N/A</TD>";
}
strOutput += "</TR>";
}
if ( AppendItemNumToOutput ) {
strFooter = i;
} else {
strFooter = "";
}
if ( PaymentProcessor != '' ) {
//Process description field for payment processors instead of hidden values.
//Format Description of product as:
// ID, Name, Qty X
strPP += fields[0] + ", " + fields[3];
if ( fields[5] != "" )
strPP += " - " + fields[5];
strPP += ", Qty. " + fields[1] + "\n";
} else {
strOutput += "<input type=hidden name=\"" + OutputItemId + strFooter + "\" value=\"" + fields[0] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemQuantity + strFooter + "\" value=\"" + fields[1] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemPrice + strFooter + "\" value=\"" + fields[2] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemName + strFooter + "\" value=\"" + fields[3] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemShipping + strFooter + "\" value=\"" + fields[4] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">";
}
}
if ( bDisplay ) {
strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strSUB+"</B></TD>";
strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strTotal + "</B></TD>";
strOutput += "</TR>";
if ( DisplayShippingRow ) {
strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strSHIP+"</B></TD>";
strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strShipping + "</B></TD>";
strOutput += "</TR>";
}
if ( DisplayTaxRow || TaxByRegion ) {
strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strTAX+"</B></TD>";
strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strTax + "</B></TD>";
strOutput += "</TR>";
}
strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strTOT+"</B></TD>";
strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + "</B></TD>";
strOutput += "</TR>";
strOutput += "</TABLE>";
if ( PaymentProcessor == 'an') {
//Process this for Authorize.net WebConnect
strOutput += "<input type=hidden name=\"x_Version\" value=\"3.0\">";
strOutput += "<input type=hidden name=\"x_Show_Form\" value=\"PAYMENT_FORM\">";
strOutput += "<input type=hidden name=\"x_Description\" value=\""+ strPP + "\">";
strOutput += "<input type=hidden name=\"x_Amount\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">";
} else if ( PaymentProcessor == 'wp') {
//Process this for WorldPay
strOutput += "<input type=hidden name=\"desc\" value=\""+ strPP + "\">";
strOutput += "<input type=hidden name=\"amount\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">";
} else if ( PaymentProcessor == 'lp') {
//Process this for LinkPoint
strOutput += "<input type=hidden name=\"mode\" value=\"fullpay\">";
strOutput += "<input type=hidden name=\"chargetotal\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">";
strOutput += "<input type=hidden name=\"tax\" value=\""+ MonetarySymbol + strTax + "\">";
strOutput += "<input type=hidden name=\"subtotal\" value=\""+ MonetarySymbol + strTotal + "\">";
strOutput += "<input type=hidden name=\"shipping\" value=\""+ MonetarySymbol + strShipping + "\">";
strOutput += "<input type=hidden name=\"desc\" value=\""+ strPP + "\">";
} else {
strOutput += "<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+ MonetarySymbol + strTotal + "\">";
strOutput += "<input type=hidden name=\""+OutputOrderShipping+"\" value=\""+ MonetarySymbol + strShipping + "\">";
strOutput += "<input type=hidden name=\""+OutputOrderTax+"\" value=\""+ MonetarySymbol + strTax + "\">";
strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\" value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + "\">";
}
}
document.write(strOutput);
document.close();
}
//---------------------------------------------------------------------||
//功能:签出购物车||
//参数:Null||
//返回:写入文档的产品表||
//用途:在HTML页面上绘制当前购物车产品表,以便||
//结帐||
//---------------------------------------------------------------------||
函数CheckoutCart(){
var iNumberOrdered=0;//订购的产品数量
var fTotal=0;//订单总成本
var fTax=0;//税额
var fShipping=0;//装运金额
var strTotal=“;//格式为货币的总成本
var strTax=”“;//格式为货币的总税额
var strShipping=“;//格式为货币的总发货量
var strOutput=”“;//要写入页面的字符串
var bDisplay=true;//是否将字符串写入页面(此处供程序员使用)
var strPP=”“;//支付处理程序说明字段
iNumberOrdered=GetCookie(“NumberOrdered”);
if(iNumberOrdered==null)
inumberrodered=0;
if(TaxByRegion){
QueryString_Parse();
fTax=parseFloat(QueryString(OutputOrderTax));
strTax=货币格式(fTax);
}
如果(b显示)
strOutput=“”+
“”+strILabel+“”+
“”+strDLabel+“”+
“”+strQLabel+“”+
“”+strPLabel+“”+
(DisplayShippingColumn?“+strSLabel+:”)+
"";
对于(i=1;i 0)
strOutput+=“”+MonetarySymbol+moneyFormat(字段[4])+“/ea”;
其他的
strOutput+=“不适用”;
}
strOutput+=“”;
}
如果(AppendItemNumToOutput){
strFooter=i;
}否则{
strFooter=“”;
}
如果(付款处理程序!=''){
//支付处理者的流程描述字段,而不是隐藏值。
//产品的格式说明如下:
//ID、名称、数量X
strPP+=字段[0]+“,”+字段[3];
如果(字段[5]!=“”)
strPP+=“-”+字段[5];
strPP+=”,数量“+”字段[1]+“\n”;
}否则{
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
}
}
如果(b显示){
strOutput+=“”+strSUB+“”;
strOutput+=“”+货币符号+标准符号+“”;
strOutput+=“”;
如果(显示ShippingRow){
strOutput+=“”+strSHIP+“”;
strOutput+=“”+货币符号+strShipping+“”;
strOutput+=“”;
}
如果(显示TaxRow | | TaxByRegion){
strOutput+=“”+strTAX+“”;
strOutput+=“”+货币符号+strTax+“”;
strOutput+=“”;
}
strOutput+=“”+STROT+“”;
strOutput+=“”+MonetarySymbol+moneyFormat((fTotal+fShipping+fTax))+“”;
strOutput+=“”;
strOutput+=“”;
如果(PaymentProcessor=='an'){
//为Authorize.net WebConnect处理此问题
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
}否则如果(PaymentProcessor='wp'){
//为WorldPay处理此问题
strOutput+=“”;
strOutput+=“”;
}否则如果(PaymentProcessor=='lp'){
//处理此链接点
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
}否则{
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
strOutput+=“”;
}
}
文件写入(输出);
document.close();
}
谢谢你们的帮助,你们已经帮了我不少忙了。我迫不及待地想知道我对编程有了更多的了解,并且能够立即解决这些问题。Update
根据我们的讨论,这是您正在寻找的代码(或类似的代码)
该代码可以替换为:
var database = GetCookie(NewOrder);
var fields = database.split('|');
是的,真的!这做了完全相同的事情。(嗯,不完全一样。正如您所看到的,它不会创建所有Token0
、Token1
等变量,但这些变量不会在其他任何地方使用。)
此外,与所有描述字段[0]
、字段[1]
等内容的注释不同,您应该完全删除这些注释,而是为所有这些字段创建命名变量:
var database = GetCookie(NewOrder);
var fields = database.split('|'),
productID = fields[0],
quantity = parseInt( fields[1], 10 ),
price = +fields[2],
description = fields[3],
shipping = +fields[4],
moreInfo = fields[5];
然后在剩下的代码中,您可以用这些名称替换所有的字段[n]
引用。例如,此代码:
fTotal += ( parseInt(fields[1]) * parseFloat(fields[2]) );
可替换为:
fTotal += quantity * price;
那样会更容易阅读,不是吗
相关说明:
parseInt()
,请始终在第二个参数中提供显式基数。否则,如果用户碰巧输入“010”,它将转换为8
,这可能不是预期的结果+someString fTotal += ( parseInt(fields[1]) * parseFloat(fields[2]) );
fTotal += quantity * price;
strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strSUB+"</B></TD>";
strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strTotal + "</B></TD>";
strOutput += "</TR>";