数量单价合计JS计算

x504313437 2014-11-14 09:17:58
function plus_money()
{
var shu1 = document.all.shu1.value
var dan1 = document.all.dan1.value
var shu2 = document.all.shu2.value
var dan2 = document.all.dan2.value
var shu3 = document.all.shu3.value
var dan3 = document.all.dan3.value
var shu4 = document.all.shu4.value
var dan4 = document.all.dan4.value
var shu5 = document.all.shu5.value
var dan5 = document.all.dan5.value
var shu6 = document.all.shu6.value
var dan6 = document.all.dan6.value
document.all("span_plus_money").innerHTML=shu1*dan1+shu2*dan2+shu3*dan3+shu4*dan4+shu5*dan5+shu6*dan6
document.all.heji.value=document.all("span_plus_money").innerHTML

}

问题是当多个单价里有小数时,合计金额里后面就有一窜小数
...全文
511 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Math函数啊。。。。
Go 旅城通票 2014-11-14
  • 打赏
  • 举报
回复
浮点计算会出现精度问题,要用#2的toFixed转换下精度 document.all("span_plus_money").innerHTML=(shu1*dan1+shu2*dan2+shu3*dan3+shu4*dan4+shu5*dan5+shu6*dan6).toFixed(2)//想要多少个小数位修改2这个参数
save4me 2014-11-14
  • 打赏
  • 举报
回复
另外你的设计,可以考虑使用id来替代name,这样的话通过id循环计算,而不用手写每个单价和数量。比如

function $(id){
    return document.getElementById(id);
}

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function plus_money(){
    var sum = 0;
    for(var i = 1; i <= 6; ++i){
        var qty = isNumber($('shu' + i).value) ? $('shu' + i).value : 0;
        var price = isNumber($('dan' + i).value) ? $('dan' + i).value : 0;
        sum += qty * price;
    }
    $('span_plus_money').innerHTML = sum;
    $('heji').value = sum;
}
save4me 2014-11-14
  • 打赏
  • 举报
回复
不知道其他地方有没有做数据验证,因为只有数字才能加减乘除,字符串的话用+的话是直接连接成新的字符串。 因为是乘法和加法,所以小数位数不会自己增加的。请举例说明一下你的问题。
宝_爸 2014-11-14
  • 打赏
  • 举报
回复
什么叫一串小数? 是想取两位有效数字吗?用.toFixed(2)
QQ234788028 2014-11-14
  • 打赏
  • 举报
回复
Math.round(floatvar*100)/100
shoppingli 2014-11-14
  • 打赏
  • 举报
回复
先用parseFloat转成浮点再运算,字符串直接运算太多问题, 之后#2s楼说用toFixed()取小数位数就可以了
本控件是基于Asp.Net平台的Web表格控件,用于Web网站的开发。 ★支持多种浏览器(IE6以上、FireFox2.0以上、谷歌浏览器等)。 ★使用本控件开发的网站,网页上表格行的插入、追加、删除、修改、上下移动、拷贝、粘贴等操作,能够立即在浏览器客户端完成,操作按钮在上图表格的左下部。 ★提交后的数据为一个DataTable。用户可使用GetCommitData方法取得使用本控件,很好地节约了网络资源,提升了网站的多用户对应能力。极大地提高了网页的反应速度,提升了网站浏览者的浏览体验。 ★本控件提供了丰富的自定义样式,供开发人员设定使用。表格(GridStyle)、奇偶行(ItemStyle、AlternatingItemStyle)、列(列的ItemStyle)、列内的控件(列的ControlStyle)、合计行(PageTotalStyle、AllTotalStyle)、控制行(包含各种行操作按钮和页操作按钮ToolBarStyle)都可以自由的进行样式设定。 ★提供多种类型的列供开发人员使用:(LabelColumn(图A-金额),TextBoxColumn(图A-数量单价),DropDownListColumn(图A-类别、商品),RadioButtonListColumn(图A-发货区分),CheckBoxColumn(图A-包装有无),RowIndexColumn(图A-ID),HiddenColumn(隐藏列),TemplateColumn(图A-备注,模板,用于扩展)。 ★支持多行表头显示(图A),支持列合并(图A-发货区分)、行合并(图A-备注)。使用本控件进行开发,开发人员能够自由设定各种显示效果。 ★支持开发人员自定义表头。 ★支持一个数据行,多行表格行表示。避免了列项目多的情况下,网页显示过宽的问题。(图A) ★支持金额、数字的自定义格式化功能。(图A-数量单价,金额,金额美元) ★支持货币符号的自定义(如:$,¥)。(图A-金额,金额美元) ★支持列的公式自动计算功能。(图A-金额=数量×单价,金额美元=金额/汇率)列设定公式后,在网页上根据因子的变化自动计算结果。结合金额、数字的自定义格式化和货币符号的自定义功能,可开发专业性的财会、金融网站。 ★支持列的Ajax联动功能。特别定义了OnCallBack事件,开发人员能非常简单地实现Ajax联动,而页面不需要刷新。(图A-类别变化的时候,Ajax联动,更新了图A-商品列表) ★支持模板列(TemplateColumn),(图A-备注,模板)。并支持模板列的Ajax联动功能。模板列提供了扩展功能,使页面可以使用本控件支持的列类型之外的控件类型。 ★支持自定义分页(图A定义每页大小为3行)。可由开发人员自行决定网页提交的模式,是小批量多批次,还是大批量少批次。本控件的灵活性提高了网站的灵活适应性。 ★本控件自动提供自带的分页控件,提供页的导航功能(图A右下部)。开发人员也可以禁止本控件提供的分页控件,使用自己的分页控件或按钮调用本控件的分页功能。 ★表格行的上下移动功能,在分页的情况下,当需要跨页的情况下,自动提交数据,执行RowMoving事件,开发者可以在此事件中执行真正的数据行的上下移动,再绑定显示数据。 ★表格行的拷贝、粘贴功能,在分页的情况下,支持跨页执行,支持带Ajax联动列的直接拷贝。 ★支持操作的撤销、恢复功能,提升用户操作体验。 ★支持页合计和全部页合计。支持五种合计类型(Sum,Max,Min,Count,Average)。通过简单的开关设置,就可以完成合计功能。(图A-数量、金额、金额美元,设定了Sum合计;图A-单价,设定了Average合计)。 ★支持多种数据源。 ★所见即所得的设计时支持,方便软件开发者进行页面设计。 ★提供丰富、实用的JS接口,供开发人员使用。 ★本控件的开发中,力求功能的简洁、实用、耐用。提升开发人员的开发体验。 QQ:1030032915 MSN:IntelliGrid@hotmail.com
<% BookIDList = Session("BookIDList")'session(BookIDList)第一次运行为空 ABookID = Split(Request("bookID"), ", ")'ABookID数组存入的是图书的id' For I=0 To UBound(ABookID)'显示数组的最大维数 If Len(BookIDList) = 0 Then BookIDList = "'" & request("bookID") & "'" ElseIf InStr( BookIDList, request("bookID")) 您的购物车为空! 您还没有选购任何书籍,您的购物车为空! <% if request.Form("jiezhang")="保存订单" then response.Redirect("checkout.asp") end if If Len(Session("BookIDList")) 0 Then sql = "Select * From tb_book Where isbn In (" &_ session("bookIDList") & ") Order By isbn" Set rs = cnn.Execute( sql ) else Response.Redirect "buycarempty.asp" end if %> 查看购物车 function stand(){ window.close();} 书号 书 名 单价 数量 金额 移去     <% sl = Request( "sl"&i) If sl (元) (元) 合计金额: (元) 清空购物车 <% session("mName")="" if request.Form("UserID")"" and request.Form("userPWD")"" then session("ID1")=request.Form("UserID") session("PWD")=request.Form("userPWD") set rs=Server.CreateObject("ADODB.RecordSet") sql="SELECT userid, password FROM tb_member WHERE userid='" & session("ID1")&"'" set rs=cnn.execute(sql) if rs.eof then %> alert("登录失败!"); window.history.back(); window.location.href="checkoutok.asp" alert("您输入的会员密码错误,请重新输入!"); history.back(); 保存订单信息 //检验会员ID号和密码 function check(){ if (form1.userID.value==""){ alert("请输入会员ID号!");form1.userID.focus();return;} if (form1.userPWD.value==""){ alert("请输入会员密码!");form1.userPWD.focus();return;} form1.submit();} 如果您还不是我们的会员,请单击“注册”按钮注册会员! 会员ID号: 注册 您的密码:   以下是您选购的图书: 书号 书名 单价 数量 金额   (元) (元) 订单保存成功!   <% '返回订单号等信息 orderid=objCmd.Parameters(3) sql1 = "Select * From tb_book Where isbn In (" & session("checkBook") & ")" Set rs = cnn.Execute( sql1 ) ASL1="" ASL1=split(session("sl"),",") i=0 sum=0 shuliang=0 while not rs.eof bookID=rs("isbn") price=rs("price") paSL=cInt(ASL(i)) booksum=cdbl(rs("price"))*ASL(i) sql2="insert into tb_orderdetail(orderid,isbn,num,money) values ('"&_ orderid&"','"&bookID&"',"&paSL&","&booksum&")" set rs1=cnn.execute(sql2) i=i+1 rs.movenext wend for each parm in objCmd.Parameters if parm.name="parID" then name1="会员ID" end if if parm.name="sum" then name1="订货金额" end if if parm.name="oDate" then name1="订购日期" end if if parm.name="aa" then name1="订单号" end if Response.Write name1 &":"& trim(parm) if name1="订货金额" then response.write "元" else response.write "" end if next %> 订单已经成功保存,欢迎下次惠顾! 网上图书订购 AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','639','height','119','src','../images/banner','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','../images/banner' ); //end AC code 网站首页 查看购物车 会员登录 管理员登录 书号 书名 出版社 图书类型 作者 等于 Like 查询图书库存量 书号 书名 图书类型 等于 Like <% If (Request("cValue") "" and Request("sField") "") Then If (Request("cValue") "") Then session("INvalue") = Request("cValue") End If session("pBookName") = "BookName" If (Request("sField") "") Then session("pBookName") = Request("sField") End If session("pBookName")=Replace(session("pBookName"), "'", "''") session("INvalue")=Replace(session("INvalue"), "'", "''") If (Request("mode") "") Then session("rs_mode") = Request("mode") End If end if if session("rs_mode")"" then if session("rs_mode")="==" then sql= "SELECT isbn, bookname, kind, price,total FROM tb_total WHERE "_ + session("pBookName") + " = '" + session("INvalue") + "'" else sql = "SELECT isbn, bookname, kind, price,total FROM tb_total WHERE "&_ session("pBookName") & " Like '%" & session("INvalue") & "%'" end if else sql="SELECT isbn, bookname, kind, price,total FROM tb_total " end if set rs_search=Server.CreateObject("ADODB.RecordSet") rs_search.open sql,cnn,1,3 %> function newwin1(url){ var newwin=window.open(url,"","resizable=yes,scrollbars=yes,width=700,height=400"); newwin.focus(); return false; } 书号 书 名 图书类型 价格 库存 alert("无符合条件的图书!") history.back(1) <%response.end() end if '分页' rs_search.pagesize=7 page=CLng(Request("page")) if page <% if page1 then %> 第一页  上一页 <%end if if pagers_search.pagecount then %>  下一页  最后一页 无符合条件的记录! <% response.Expires=-1 username1=trim(request("username")) userpass1=trim(request("userpass")) if username1="" or userpass1="" then session("passed1")="" session("msg1")="用户ID和密码不能为空" else set rs=server.CreateObject("adodb.recordset") strsql="select * from tb_member where userid='"&username1&"'" rs.open strsql,cnn,3,3 if rs.eof then session("passed1")="" session("msg1")="用户ID不存在" else if rs("PassWord")userpass1 then session("passed1")="" session("msg1")="密码错误" else session("passed1")=true session("msg1")="" session("ID1")=username1 session("username1")=rs("UserName") end if end if end if response.Redirect("memberlogin.asp") %> 会员登录 function chkfields(){ if(document.myform.username.value==''){ alert("用户ID不能为空"); document.myform.username.focus(); return false; } if(document.myform.userpass.value==''){ alert("用户密码不能为空"); document.myform.userpass.focus(); return false; } return true; } function look(id){ window.open("orderhistory.asp?ID="+id,"","scrollbars=yes,resizable=yes,width=700,height=600"); } AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','639','height','119','src','../images/banner','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','../images/banner' ); //end AC code 网站首页 查看购物车 会员登录 管理员登录 <% if session("msg1")"" then response.write session("msg1") else response.write "用户登录" end if %> I  D: 密 码:    用户 , 您已成功登录 会员注册成功 祝贺您,已经注册成功! 您的会员ID号为:[ ] 密码为: [ ] 请记好! 单击“返回”按钮保存订单信息。 <% response.Expires=-1 username1=trim(request("username")) userpass1=trim(request("userpass")) 'response.write 41 'response.End() if username1="" or userpass1="" then session("passed")="" session("msg")="请您先登录再进来!" 'response.Redirect("userlogin.asp") else set rs=server.CreateObject("adodb.recordset") strsql="select * from tb_operator where operatorname='"&username1&"'" rs.open strsql,cnn,3,3 if rs.eof then session("passed")="" session("msg")="管理员名称不存在" else if rs("password")userpass1 then session("passed")="" session("msg")="密码错误" else session("passed")=true session("msg")="" session("username")=rs("operatorname") 'response.Redirect("userlogin.asp") end if end if end if response.Redirect("operatorlogin.asp") %> 管理员登录 function chkfields(){ if(document.myform.username.value==''){ alert("管理员名称不能为空"); document.myform.username.focus(); return false; } if(document.myform.userpass.value==''){ alert("管理员密码不能为空"); document.myform.userpass.focus(); return false; } return true; } function take(){ window.open("lookup.asp","图书库存查询"); } AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','639','height','119','src','../images/banner','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','../images/banner' ); //end AC code 网站首页 查看购物车 会员登录 管理员登录 <% if session("msg")"" then response.write session("msg") else response.write "管理员登录" end if %> 管理员: 密码:    管理员 , 登录成功 的订单一览表 的订单一览表 订单号书号书名价格数量金额购书日期 <% rs.pagesize=7 page=CLng(Request("page")) if page        第一页 <% end if if page1 then %> 第一页 上一页 <%end if if pagers.pagecount then %> 下一页 最后一页 <% else response.write "您没有购书记录!" end if %> <% If (Request("cValue") "" and Request("sField") "") Then If (Request("cValue") "") Then session("INvalue") = Request("cValue") End If session("pBookName") = "BookName" If (Request("sField") "") Then session("pBookName") = Request("sField") End If session("pBookName")=Replace(session("pBookName"), "'", "''") session("INvalue")=Replace(session("INvalue"), "'", "''") If (Request("mode") "") Then session("rs_mode") = Request("mode") End If end if if session("rs_mode")"" then if session("rs_mode")="==" then sql= "SELECT isbn, bookname, author, price FROM tb_book WHERE "_ + session("pBookName") + " = '" + session("INvalue") + "'" else sql = "SELECT isbn, bookname, author, price FROM tb_book WHERE "&_ session("pBookName") & " Like '%" & session("INvalue") & "%'" end if else sql="SELECT isbn, bookname, author, price FROM tb_book " end if set rs_search=Server.CreateObject("ADODB.RecordSet") rs_search.open sql,cnn,1,3 %> function newwin1(url){ var newwin=window.open(url,"","resizable=yes,scrollbars=yes,width=700,height=400"); newwin.focus(); return false; } 书号 书 名 作 者 原价 现 价 购物 alert("无符合条件的图书!") history.back(1) <%response.end() end if '分页' rs_search.pagesize=7 page=CLng(Request("page")) if page <% if page1 then %> 第一页  上一页 <%end if if pagers_search.pagecount then %>  下一页  最后一页 无符合条件的记录!

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧