a个人经验总结2
金额
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="../19form/common.css"/>
<style>
.money_unit,.money-edit{background: url("money_rp.png") repeat-y;}
.money_unit{height: 22px; line-height: 22px;}
.money_unit span{width:19px;display:inline; text-align: center;float: left;font-size: 12px;margin-right:1px;}
.money_unit span.last{width:18px;margin-right:0;}
.money-edit{letter-spacing: 13px;text-align: right;overflow: hidden; font-size: 14px;}
</style>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="100">111111111</td>
<td width="219">
<div class="money_unit">
<span>亿</span><span>千</span><span>百</span><span>十</span><span>万</span><span>千</span><span>百</span><span>十</span><span>元</span><span>角</span><span class="last">分</span>
</div>
</td>
</tr>
<tr>
<td>111111111</td>
<td>
<div class="money-edit">
<input type="text" name="" class="money" />
</div>
</td>
</tr>
<tr>
<td>111111111</td>
<td>
<div class="money-edit">
<input type="text" name="" class="money" />
</div>
</td>
</tr>
</table>
<p></p>
<script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function () {
$(".money-edit").click(function () {
$(this).find("span").remove();
$(this).find(".money").show().focus().select();
});
$(".money").keyup(function () {
//只能输入数字和点
this.value=this.value.replace(/[^\d.]/g,""); //保证第一个为数字而不是.
this.value=this.value.replace(/\.{2,}/g,"."); //保证不能连续输入两个.
this.value = this.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); // 输入过程解决 3.234.235.43 =》 3.234
});
var arr=[];
var money=0;
$(".money").blur(function () {
var total = 0;
var index=$(this).parent().parent().parent().index()-1; // 让index最终等于0
console.log("xx: index"+index);
console.log("xx:1 "+$(this).val());
if($(this).val()==""){ //如果值为空,直接隐藏
$(this).hide();
}else{
money=format($(this).val());
if(money.length>11){
alert("数字超出最大范围");
return $(this).select();
}
$(this).parent().append("<span style='margin-right: -8px;width:221px; overflow: hidden;'>"+money+"</span>");
arr[index]=parseInt(money);
if(arr.length>0){
for(var i=0;i<arr.length;i++){
total+=arr[i];
}
$("p").text(total.toString());
}
$(this).val((parseFloat(money)/100).toFixed(2));
$(this).hide();
} }); //四舍五入 var a=123; a.toFixed(2) 四舍五入,保留2位小数
function format(num){
// num=parseFloat(num).toString(); // 解决 3.234.235.43 =》 3.234
if(num.indexOf(".")==-1){ // 整数
return num+"00";
}else{
//return ((parseFloat(num).toFixed(2))*100).toString();
return (Math.round(parseFloat(num)*100)).toString(); // 解决 546.546问题
/*return (parseFloat(parseFloat(num).toFixed(2)).mul(100)).toString();*/
};
}
// 浮点数乘法
// 一般情况下 546.55*100= 54654.99999999999
function accMul(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)
}
Number.prototype.mul = function (arg){
return accMul(arg, this);
}
});
</script>
</body>
</html>
money_rp.png
jquery 购物车总价
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery实现购物车多物品数量的加减+总价计算</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
<script>
$(function(){
$(".add").click(function(){
var t=$(this).parent().find('input[class*=text_box]');
t.val(parseInt(t.val())+1)
setTotal();
})
$(".min").click(function(){
var t=$(this).parent().find('input[class*=text_box]');
t.val(parseInt(t.val())-1)
if(parseInt(t.val())<0){
t.val(0);
}
setTotal();
})
function setTotal(){
var s=0;
$("#tab td").each(function(){
s+=parseInt($(this).find('input[class*=text_box]').val())*parseFloat($(this).find('span[class*=price]').text());
});
$("#total").html(s.toFixed(2));
}
setTotal(); })
</script>
</head>
<body>
<table id="tab">
<tr>
<td>
<span>单价:</span><span class="price">1.50</span>
<input class="min" name="" type="button" value="-" />
<input class="text_box" name="" type="text" value="1" />
<input class="add" name="" type="button" value="+" />
</td>
</tr>
<tr>
<td>
<span>单价:</span><span class="price">3.95</span>
<input class="min" name="" type="button" value="-" />
<input class="text_box" name="" type="text" value="1" />
<input class="add" name="" type="button" value="+" />
</td>
</tr>
</table> <p>总价:<label id="total"></label></p>
</body>
</html>
checkbox 大小,对齐方式
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
p{line-height: 30px;border: 1px solid red;}
input[type="checkbox"]{
vertical-align: middle; /* 边框与文字对齐*/
width:20px;height: 20px; /*边框大小 */
}
</style>
</head>
<body>
<p>
<input type="checkbox"/>普通 <input type="checkbox"/>加急
</p>
</body>
</html>
prototype 原型继承
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function () {
$("button").click(function () {
var val=$("#name").val().trimAll();
alert(val);
});
// 原型继承 去掉所有空格
String.prototype.trimAll= function () {
return this.replace(/\s/g,"");
}
});
</script>
</head>
<body>
<input type="text" id="name"/>
<button>btn</button>
</body>
</html>
js优化技巧
1.使用 === 代替 == 如果两边的操作数具有相同的类型和值,=== 返回true, !== 返回 false;
2. JSLint 检查代码问题和错误。
3. 把js放在body结束之前, 目标是让页面尽可能快的呈献给用户。
4. for(var i=0,len=xx.length;i<len;i++){
// 不需要每次循环都计算机数组的长度。
}
5.构建字符串的最优方法
//少用for语句,原生代码(join())通常比非原生快很多。
$(function () {
var arr= ['file','edit','view'];
var list='<ul><li>'+arr.join('</li><li>')+'</li></ul>';
$("body").append(list);
});
6.减少全局变量
<script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function () {
// 方式一
var name='abc';
var lastName='wp';
function test(){}
console.log(name);
// 方式二
/* var Person={
name:'xiao',
age:'12',
skill: function () {
return 'i am good at swimming';
}
}
alert(Person.skill());*/
// 方式三
var Student=Student || {};
Student.name='he';
Student.age=12;
Student.skill= function () {
return this.name+' is shy';
}
alert(Student.skill()); });
</script>
7. 自调用匿名函数
(function () {
alert(1);
})();
原生代码永远比库快 javascript比jquery快,js的for比Jquery的 each()快
8.函数传入对象参数
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var googleMap={
show: function () {
console.log("google... ");
}
}
var baiduMap={
show: function () {
console.log("baidu... ");
}
}
/*var renderMap= function (type) {
if(type==='google'){
googleMap.show();
}else if(type==='baidu'){
baiduMap.show();
}
}*/
var renderMap= function (map) {
/*if(map.show instanceof Function){
map.show();
}*/
map.show();
}
renderMap(googleMap); // 传入一个对象参数!
</script>
</body>
</html>
9.JS得到一个对象的3种方式
js要得到一个对象,不是通过实例化类,而是找到一个对象作为原型并克隆它
javascript的根对象是Object.prototype,这个是原型
Object.create(); 底层实现
<script type="text/javascript">
// 克隆一个飞机 Object.create(); 2009年 ES5新增的,效率比 new 一个构造器慢 var Plane = function(){
this.blood = 100;
this.attackLevel = 1;
this.defenseLevel = 1;
}; var plane = new Plane();
plane.blood = 500;
plane.attackLevel = 10;
plane.defenseLevel = 7; var clonePlane = Object.create( plane );
console.log( clonePlane ); // 输出:Object {blood: 500, attackLevel: 10, defenseLevel: 7} //在不支持Object.create 方法的浏览器中,则可以使用以下代码:
Object.create = Object.create || function( obj ){
var F = function(){};
F.prototype = obj;
return new F();
} </script>
简单实现
var obj1= new Object() 或 var obj2 = {};
构造器实现(当使用new 来调用函数时,此时的函数就是一个构造器,实际上也是先克隆Object.prototype,再做其他)
<script>
function Person(name){
this.name=name;
}
Person.prototype.getName= function () {
return this.name;
}
var a = new Person('aaa');
console.log("xx: "+ a.getName());
</script>
10.this的指向
10.1 作为对象的方法调用
var obj={
a:1,
getA: function () {
alert(this.a); // 输出: 1
}
};
obj.getA();
10.2作为普通函数调用
window.name='globalName';
var getName= function () {
return this.name; // 全局 this 指向 window
}
alert(getName()); // globalName;
10.3构造器调用
var MyClass= function () {
this.name='sven';
}
var obj=new MyClass();
alert(obj.name); // sven
10.4 Function.prototype.call 或 apply 动态改变传入函数的this
var obj={
name:'sven',
getName: function () {
return this.name;
}
};
var obj2={
name:'aaa'
};
console.log("xx: "+obj1.getName()); // sven
console.log("xx: "+obj.getName().call(obj2)); //aaa
11. 对象方法调用、普通函数调用区别
var obj = {
myName: 'sven',
getName: function(){
return this.myName;
}
};
console.log( obj.getName() ); // 输出:'sven' 对象调用函数,指向 obj
var getName2 = obj.getName; // 用一个变量来引用,普通函数调用方式,指向windows
console.log( getName2() ); // 输出:undefined
12. call/apply 改变this 指向
document.getElementById('div1').onclick= function () {
alert(this.id); // div1
var func= function () {
alert(this.id);
};
func(); // undefined 普通函数调用
func.call(this); // div1 把 this 指向 div1
}
13.
(function (){
"use strict"
alert(this); // undefined
})(); // ECMAScript 5 的 strict模式下,this被规定不指向全局对象 14. 手机测试地址栏Hash/锚点,返回按钮
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试地址栏Hash/锚点,返回按钮</title>
<style>
div {
width: 200px;
height: 100px;
display: none;
font-size: 5em;
}
</style>
</head>
<body>
<div id="div1" onclick="divClick('div2')" style="background-color: yellow;display: block;">Div1</div>
<div id="div2" onclick="divClick('div3')" style="background-color: red;">Div2</div>
<div id="div3" onclick="divClick('div4')" style="background-color: green;">Div3</div>
<div id="div4" onclick="divClick('div1')" style="background-color: blue;">Div4</div> </body>
<script>
//给页面绑定hashchange事件
window.onhashchange = function(){
var hashCode = location.hash;
var _id = hashCode.substr(1);//去掉#,获取后面带的参数
console.log("xx: "+_id);
divchange(_id);
}; //div点击事件
function divClick(_id){
location.href = "#"+_id;
} //div切换触发
function divchange(_id){
div1.style.display = 'none';
div2.style.display = 'none';
div3.style.display = 'none';
div4.style.display = 'none'; document.getElementById(_id).style.display = 'block';
} </script>
</html>
15.图片自适应居中
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
body{position:relative;}
img{position:absolute;left:50%;margin-left:-100px;}
</style>
</head>
<body>
<img src="pic.png" width="200"/>
</body>
</html>
16.带小图标的tab
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title> <style>
body,div,i{margin:0;padding:0;}
#foot_menu{
/* display: flex;
flex-flow: row;
*/
position:fixed;
bottom:0;
height:50px;
padding:5px 0;
box-shadow: 0px -5px 11px #c6c3c7;
width:100%;
background:#FFF;
}
#foot_menu div{
/* flex: 1;
*/
float:left;
width:25%;
/* margin:3px;*/
text-align:center;
}
#foot_menu div i{
width:20px;
height:20px;
background:url(icon_1.png) no-repeat;
background-size:850%; /* 这一行 不懂。。*/
display:inline-block;
color:#727171;
}
#foot_menu div .i1{
background-position:0px -18px;
}
#foot_menu div .i11{
background-position:0px 2px;
}
#foot_menu div .i2{
background-position:-26px -18px;
}
#foot_menu div .i22{
background-position:-26px 2px;
} #foot_menu div .i3{
background-position:-50px -18px;
} #foot_menu div .i33{
background-position:-50px 2px;
} #foot_menu div .i4{
background-position:-74px -18px;
}
#foot_menu div .i44{
background-position:-74px 2px;
}
/*底部菜单*/ </style>
<script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(function () {
$("#foot_menu div").click(function () {
var div_i = $('#foot_menu div i');
var num = $(this).index()+1;
re_class = 'i'+num+num;
ad_class = 'i'+num;
for(var a = 0; a<div_i.length ; a++){
$('#foot_menu div').eq(a).find('i').removeClass('i'+(a+1)).addClass('i'+(a+1)+(a+1));
}
$(this).find('i').removeClass(re_class).addClass(ad_class); });
});
</script>
</head>
<body>
<div class="height60"></div>
<div id="foot_menu">
<div>
<i class="i1"></i><br/>
首页
</div>
<div>
<i class="i22"></i><br/>
采购大厅
</div>
<div>
<i class="i33"></i><br/>
生意圈
</div>
<div>
<i class="i44"></i><br/>
我的
</div>
</div>
</body>
</html>
使用background-size:850%;是因为图片尺寸为40px 网页只有20px大小
17. js找不到则 return null
var arr=[4,651,56,2,5,8];
function get(id){
for(var i =0;i<arr.length;i++){
if(arr[i]===parseInt(id)){
return arr[i];
}
}
//return "没有这个值";
return null; // 如果 找不到,就返回空
}
var res=get(989);
//var res=get(56); 找到就返回
alert(res);
18.PC网页窗口变化时,重新加载页面,手机不受影响
if(!navigator.userAgent.toLocaleLowerCase().match(/(iphone|ipod|ipad|android)/)){ $(window).resize(function(){
location.reload();
})
}
a个人经验总结2的更多相关文章
- 移动硬盘不能识别的常见7种解决方案 ~ By 逆天经验
服务器汇总:http://www.cnblogs.com/dunitian/p/4822808.html#iis 服务器异常: http://www.cnblogs.com/dunitian/p/45 ...
- 【原创经验分享】WCF之消息队列
最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...
- iOS架构一个中型普通App的一些经验总结
这一版比较完善的的App终于提交审核了.有时间写写自己的一些经验的总结了.自己主导的从0到比较成型的app到目前来说也只有两个,但是其中的很多东西都是大同小异.基本上是想到了什么就写什么,感觉写的不到 ...
- 从史上八大MySQL事故中学到的经验
本文列举了史上八大MySQL宕机事件原因.影响以及人们从中学到的经验,文中用地震级数来类比宕机事件的严重性和后果,排在最严重层级前两位的是由于亚马逊AWS宕机故障(相当于地震十级和九级). 一.Per ...
- CentOS上 Mono 3.2.8运行ASP.NET MVC4经验
周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在Mono 3.2.8上运行成功MVC4.在此总结经验如下: 系统平台的版本: CentOS 6.5 Mono 3.2.8 J ...
- 【腾讯Bugly经验分享】程序员的成长离不开哪些软技能?
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ce8068d4d44a246f72baf2 Dev Club 是一个交流移动 ...
- CI Weekly #6 | 再谈 Docker / CI / CD 实践经验
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
- C#异常处理经验(原则与方法)
本文是异常处理经验性的文章,其实跟C#关系也不大.比较适合刚刚熟悉异常语法,而缺乏实战的读者.当然,经验老练的读者也可指出不足.给予意见.补充说明,一起完善文章,分享更多知识与经验. 1 ...
- 【原创经验分享】JQuery(Ajax)调用WCF服务
最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚 ...
- 千回百折:百度Java研发offer斩获记和经验分享
起因 面试过程 等待offer的过程中悟道 Java面试常考知识点个人总结 过程 百度——作为国内互联网的巨头之一,最近的一些风波对其褒贬不一,但是类似事件不是第一次发生,也绝对不是最后一次,对于真的 ...
随机推荐
- 【函数】plsql 函数的默认值
1.创建函数 CREATE OR REPLACE FUNCTION fk_url_format(url VARCHAR2,charset VARCHAR2 :='UTF-8')RETURN VARCH ...
- ConsoleApplication 添加对于 System.ServiceModel.Web 引用失败(出现黄色感叹号)的解决办法
今天在写一个WebHttpBinding的demo,再创建一个Console应用程序后,发现无法添加System.ServiceModel.Web,如图
- iOS GCD 必读推荐,有关于单例使用问题
链接如下:http://www.cocoachina.com/swift/20150129/11057.html 以前只注意使用dispatch_once达到创建单例对象时的线程安全,读了下边这篇文章 ...
- ACM/ICPC 之 BFS+状态压缩(POJ1324(ZOJ1361))
求一条蛇到(1,1)的最短路长,题目不简单,状态较多,需要考虑状态压缩,ZOJ的数据似乎比POj弱一些 POJ1324(ZOJ1361)-Holedox Moving 题意:一条已知初始状态的蛇,求其 ...
- buffer正确的拼接方式
var chunks = []; var size = 0; res.on('data',function(chunk){ chunks.push(chunk); size+= chunk.lengt ...
- Python 开发轻量级爬虫01
Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访 ...
- nyoj123_士兵杀敌(四)_树状数组_插线求点
士兵杀敌(四) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战 ...
- PUTTY的使用教程
Putty是一个优秀的,开源的SSH远程登录软件. 它不仅仅可以实现登录,还有很多高级功能. PuTTY is a free SSH, Telnet and Rlogin client for 32- ...
- 【python】类变量和对象变量
来源:http://www.cnblogs.com/gtarcoder/p/5005897.html python是一种解释性的语言,任何变量可以在使用的时候才声明以及定义,也可以在程序运行的任何位置 ...
- 【XLL API 函数】xlUDF
调用用户定义函数,这个函数允许DLL 调用 VBA 中的用户定义函数,XLM 宏语言函数,以及在其它 add-ins 中注册的函数. 原型 Excel12(xlUDF, LPXLOPER12 pxRe ...