说明:
这篇文章可以解决这几个问题:
一、从已经获取到的元素中再次获取其子元素(代码第6、7行);
二、为动态加载的元素绑定事件(代码第三行的“.live”);
三、JS浮点运算不“准确”(第二个代码块);
示例:
代码:
说明:这些只是“核心”代码。
// 金额计算器 $(function(){ $('input.count,input.price').live('change', function(){ // 根据单价计算金额 var p = $(this).parents('.productList'); var count = $('input.count',p).val(); var price = $('input.price',p).val(); v = calcMul(count,price); $('input.amount',p).val(v); // 根据上一步得出的金额计算总金额 totalAmount = 0; $('#prodList input.amount').each(function(){ totalAmount = calcAdd(totalAmount,this.value); }); $('#totalAmount').val(totalAmount); }); });
JS的浮点运算貌似有点问题,这是“补丁”:
// 加、减、乘、除的四个运算 function calcAdd(arg1,arg2){ // 加 var r1,r2,m; try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)) return (arg1*m+arg2*m)/m } function calcSub(arg1,arg2){ // 减 var r1,r2,m,n; try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)); n=(r1>=r2)?r1:r2; return ((arg1*m-arg2*m)/m).toFixed(n); } function calcMul(arg1,arg2){ // 乘 var m=0,s1=arg1.toString(),s2=arg2.toString(); try{m+=s1.split(".")[1].length}catch(e){} try{m+=s2.split(".")[1].length}catch(e){} return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m) } function calcDiv(arg1,arg2){ // 除 var t1=0,t2=0,r1,r2; try{t1=arg1.toString().split(".")[1].length}catch(e){} try{t2=arg2.toString().split(".")[1].length}catch(e){} with(Math){ r1=Number(arg1.toString().replace(".","")) r2=Number(arg2.toString().replace(".","")) return (r1/r2)*pow(10,t2-t1); } }
<完>
文章已经结束以下是一些废话,写一些关健词方便朋友们需要答案时能找到这篇文章。
jquery从获取到的元素对象中再次获取元素、通过父元素得到其中的子元素、怎么获取JQuery动态生成的元素的值?、动态添加的元素无法获取其值、JS浮点运算存在陷阱、js 浮点运算问题、js 浮点运算不准确(精确)、js 浮点运算不准确是怎么回事。
如果你有上边的问题,请将滚动条拖至顶部开始查看。如有疑问请留言。