js学习笔记(一)
来源:互联网 发布:淘宝网店爆款打造 pdf 编辑:程序博客网 时间:2024/06/05 08:47
需求
最近公司给的js任务,有如下要求:
①点击"+","-"号,改变客户价格的值,售价对应改变(售价=实际价格+客户加价)
②用户输入加价,有同样的效果
③点击"保存",更新数据库信息
实现思路
第一个比较比较好弄,给对应的按钮Onclick()事件,然后在事件里面写相应的逻辑就可以了。因为id是动态的,可以利用map_index巧妙得解决这个问题
第一个利用onblur()事件,当触发事件时首先调用ischeckNum()方法检查是否是数字,然后通过jquery、parseFloat()等方法进行计算、写入值
第三个用hibernate很轻松就完成了,这里就不写了
相关代码
html代码<td><div id="div1" name="div1" class="purchase_quantity"><input type="text" name="${map_index}" id="${map_index}" value="${(map['addPrice'])!''}" class="goods_nums_text w30" onblur="onblurInput(${map_index})"><span class="add_j"><button class="decrease" type="button" onclick="increasePrice(${map_index})" >+</button><button class="decrease" type="button" onclick="decreasePrice(${map_index});" >-</button></span></div></td>
onblur事件监听方法
function onblurInput(id){ if(ischeckNum(id)){ //实际价格 var actualPrice = ${actualPrice}; var addPrice = $("#"+id).attr("value"); var a = parseFloat(addPrice); //判断加价 if(a>=0){ var a1=toDecimal2(a); var adPrice=$("#"+id).val(a1); }else{ alert("加价不可为负噢!"); return; } //再次获得加价 var adPrice = $("#"+id).attr("value"); //售价 //var salePrice = $("."+id).text(); var s = parseFloat(adPrice)+parseFloat(actualPrice); var salePrice = toDecimal2(s); //alert("salePrice"+salePrice); $("."+id).html(salePrice); }}
由于js是弱数据语言,进行运算时会出现很离奇的事情,比如"0.1+0.1=0.200000001"(例子),所以写了个方法每次都强制转换为两位小数
强制保留两位小数,没有就补0
function toDecimal2(x) { var f = parseFloat(x); if (isNaN(f)) { return false; } var f = Math.round(x*100)/100; var s = f.toString(); var rs = s.indexOf('.'); if (rs < 0) { rs = s.length; s += '.'; } while (s.length <= rs + 2) { s += '0'; } return s; }
判断是否为数字的方法
//判断是否为数字 function ischeckNum(id) { var num = document.getElementById(id).value; if(num) { if( !isNaN( num ) ) { //alert('是数字'); return true; } else { alert('您输入的数据不是数字!'); div1.id.select(); return false; } } else { alert('需输入内容!'); div1.id.focus(); return false; } }
点击"+"号时调用的方法
function increasePrice(id){ var addPrice = $("#"+id).attr("value"); var a = parseFloat(addPrice)+0.2; var adPrice=toDecimal2(a); $("#"+id).val(adPrice) //售价 var salePrice = $("."+id).text(); var s= parseFloat(salePrice)+0.2; var sPrice= toDecimal2(s); $("."+id).html(sPrice); }
点击"-"号调用的方法
function decreasePrice(id){ var addPrice = $("#"+id).attr("value"); var a = parseFloat(addPrice)-0.2; var adPrice=toDecimal2(a); //售价 var salePrice = $("."+id).text(); var s= parseFloat(salePrice)-0.2; var sPrice= toDecimal2(s); if((adPrice>=0)&&(sPrice>=0)){ $("#"+id).val(adPrice); $("."+id).html(sPrice); }else{ alert("好像不能再低了!"); } }
最终效果
总结
作为一个走java路线的菜鸟来说,能完成这个需求很不容易了,以前写的java已有几万行,但js却没多少,回头一看,确实没认真写过js。通过这个需求,不那么惧怕js,以后自己也可以尝试写了
参考资料:js判断输入是否为数字
限制文本框只能输入数字(这个方法我好像没用)
阅读全文
0 0
- js学习笔记(一)
- JS学习笔记一
- JS学习笔记一
- js学习笔记(一)
- JS学习笔记一
- js学习笔记(一)
- js学习笔记(一)
- js学习笔记一
- JS学习笔记(一)
- js 学习笔记 (一)
- js学习笔记(一)
- JS学习笔记(一)
- js学习笔记(一)
- js深入浅出学习笔记(一)
- Js学习笔记(一)
- JS学习笔记(一)
- js学习笔记(一)
- Angular.js学习笔记(一)
- VMware VMotion迁移与原理
- R.styleable找不到资源或者是报错
- java的学习笔记
- Docker容器简要说明
- 开源项目之android-async-http开源库
- js学习笔记(一)
- Leetcode(W2):349. Intersection of Two Arrays
- C++中函数在内存中的分布情况
- (五)数据结构之静态查找的简单实现:顺序查找和二分查找
- usercf 与 itemcf的原理分析
- Java代理模式及应用(一)代理模式介绍
- python 访问字典
- Win7 搭建MySQL集群
- Leetcode练习 #4Median of Two Sorted Arrays