那些被漏掉的JQuery总结(三)——关于前台的数据计算问题
来源:互联网 发布:淘宝卖家怎么评差评 编辑:程序博客网 时间:2024/05/27 20:51
前段时间,由于项目比较着急上线。在实现一个计算功能的时候,我偷了点懒,选择了后台进行计算。感觉实现起来更简单,毕竟前台代码写的不是很多。随着时间的推移,后台处理数据出现了很多问题,一番重构后,计算和数据的处理都挪到了前台。过程很痛苦,很多细节让人抓狂,这就是实习的魅力!所有的经历都是慢慢的成长!这里拿出来和大家一起分享一下。
一、数据类型问题
1、使用正确的数据类型:
因为我们要进行数值计算,所以这里要使用数值类型,也就是Number类型。(相对应的还有NaN类型即not a number 。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。
NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身
)。PS:如果你要比较两个数值的大小,最好使用数值类型来进行计算和比较。
2、强制类型转换:
有3个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()
二、如何四舍五入?
使用 toFixed函数。
三、千分位处理问题(显示、去除)
显示:(s是你要处理的数值对象,必须为数值类型)
<span style="font-family:KaiTi_GB2312;font-size:18px;"> </span><pre name="code" class="javascript"><span style="font-family:KaiTi_GB2312;font-size:18px;">function(s){ var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1]; t = ""; for (i = 0; i < l.length; i++) { t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : ""); } return t.split("").reverse().join("") + "." + r;}</span>
去除千分位的显示
<span style="font-family:KaiTi_GB2312;font-size:18px;">function(value){ var noThousands = Number(0); noThousands = value.replace(/,/g, '') return noThousands ;}</span>
四、输入的过滤(正则表达式):限制只能输入数字和小数点
replace(/[^\d\.-]/g, "")
五、小结:
如果要将以上的代码整合到一起的话,其实也简单。给出一个自己在项目中应用的实例,希望对大家能有借鉴作用。
function <span style="font-family:KaiTi_GB2312;">ParseToThousands</span>(s, n) {//<param>s</param>资金<param>n</param>小数点后保留位数如果是非零值或"",则返回"0.00"</summary> if (isNaN(s) || s == "") return "0.00"; n = n > 0 && n <= 20 ? n : 2; s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1]; t = ""; for (i = 0; i < l.length; i++) { t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : ""); } return t.split("").reverse().join("") + "." + r; }
总结:
心态积极向上,找准定位,享受好自己的每一天,经营并总结好每一天。快乐做好自己,甚好!在大公司工作或者实习,我能学到什么不一样的东西。咱们都需要一些时间来独立思考和总结,而不是焦虑和紧张。让我们忘掉进度的烦恼吧,因为那是咱们早晚都要学的东西。也请不要再和其他人做什么对比了,不要给自己辣么大压力。只要自己每天都在进步就好。和自己比,是不是今天比昨天做的好辣么一点。这就是一件很幸福的事情。
推荐文章:关于js的数据类型操作
http://blog.csdn.net/z363115269/article/details/9122731
- 那些被漏掉的JQuery总结(三)——关于前台的数据计算问题
- 那些被漏掉的JQuery总结(二)——如何给下拉框取值赋值?
- 那些漏掉的JQuery总结(四)——JQuery设计思想
- 那些被漏掉的JQuery总结(一)——Window.Onload和document.ready的对比(补充Page_load)
- 那些被漏掉的JQuery总结(五)——函数声明、函数表达式、匿名函数(立即执行、自执行)
- 总结(Jquery)前台的页面的分辨率自适应问题
- 前台jquery each遍历数据的问题
- 双层循环因为漏掉break带来的数据重复问题
- 蓝桥杯——漏掉的账目
- C语言的那些题(三) —— 编程计算身高问题
- C语言的那些题(三) —— 编程计算身高问题完善版
- WEB前台遇到的问题总结—001—使用jquery设置select的默认选中项不成功问题
- 关于ModelAndView引用类的问题(前台无法收到后台发送的数据)
- 关于C++的那些事儿(三)
- 关于QT的那些事(三)
- jQuery那些容易被忽略的问题
- 趣味编程题——漏掉的账目(C语言编写)
- 漏掉的账目明细
- 138. Copy List with Random Pointer
- 马士兵Java课堂笔记-7-键盘事件测试代码
- EditView、ImageView、Button
- AFN上传多张图片到服务器
- Image图片的压缩使用
- 那些被漏掉的JQuery总结(三)——关于前台的数据计算问题
- Eclipse构建Maven项目
- 公众平台调整SSL安全策略,请开发者注意升级
- STL乱搞 Codeforces675D Tree Construction
- PPT怎么x的几次方?
- Digilent Basys2开发板驱动安装失败
- 初学JAVA环境变量配置以及编译程序和运行
- LightOj--1071--Baker Vai(拆点最大费用流)
- HDOJ 5600-N bulbs【模拟】