程序员人生 网站导航

js 使用技巧 - [近几年工作中的经验总结的技巧]

栏目:htmlcss时间:2015-01-18 10:26:05

1、如果 ajax 返回单1的 json 格式,接收方需要这样再格式化1下赋值: var str = eval("(" + msg + ")");

开发援用: /// <reference path="http://x.autoimg.cn/as/static/js/jquery⑴.7.2.min.js" />
2、如果 ajax 同发出两个以上的要求时,返回的状态会串,不能用异步,用同步可以解决问题;
3、navigator.plugins["Shockwave Flash"] 检查 当前机器 flash 版本
4、删除前后空格 String.prototype.trim = function () { return this.replace(/(^[ | ]*)|([ | ]*$)/g, ""); }
5、IE6 下 JS 在履行1个方法后,当前方法内的代码履行完后,此次的单线程就会停止,当前的方法里还有其它的方法也不会再履行;如果要履行的话,需要加 setTimeout(); 事件再履行;
6、把 document.getElementById(id) 转换成 $("id")
function $(id) { return typeof (id) == 'string' ? document.getElementById(id) : id }
7、图片加载失败,并避免死循环 onerror="this.src=aaa.jpg;this.onerror=null;"
8、document.getElementsByTagName('*').length 查看页面有多少个 Dom 元素;
9、parseInt() 只会返回整数部份;1个完全的parseInt应当是这样的:parseInt(string, radix),其中radix指定数字的进制(10进制,2进制,106进制etc.) parseInt("f",16): 15
把加号放在包括合法数字的字符串前面会将字符串转化为数字;
Null 用成数字时会表现为0,做布尔时表现为false.
声明1个变量但没有赋值,此时这个变量的值为undefined. Undefined用作数字时类型表现为NaN, 用作布尔时表现为false.
10、各种正则验证规则 数字验证规则:
"^d+$"  //非负整数(正整数 + 0)
"^[0⑼]*[1⑼][0⑼]*$"  //正整数
"^((-d+)|(0+))$"  //非正整数(负整数 + 0)
"^-[0⑼]*[1⑼][0⑼]*$"  //负整数
"^-?d+$"    //整数
"^d+("  //非负浮点数(正浮点数 + 0)
"^(([0⑼]+.[0⑼]*[1⑼][0⑼]*)|([0⑼]*[1⑼][0⑼]*.[0⑼]+)|([0⑼]*[1⑼][0⑼]*))$"  //正浮点数
"^((-d+("  //非正浮点数(负浮点数 + 0)
"^(-(([0⑼]+.[0⑼]*[1⑼][0⑼]*)|([0⑼]*[1⑼][0⑼]*.[0⑼]+)|([0⑼]*[1⑼][0⑼]*)))$"  //负浮点数
"^(-?d+)("  //浮点数
var r = /^+?[1⑼][0⑼]*$/;  //正整数

r.test(str);
11、依照 json 的属性值排序
var cc=[
{ name: "a", age: 30},
{ name: "c", age: 24},
{ name: "b", age: 28},
{ name: "e", age: 18},
{ name: "d", age: 38}
].sort(function(obj1, obj2) {
return obj1.age - obj2.age;
});
for(var i=0;i<cc.length;i++){
alert(cc[i]['age']); //顺次显示 18,24,28,30,38
}
12、合并数组:
var mergeTo = [4,5,6];
var mergeFrom = [7,8,9];
Array.prototype.push.apply(mergeTo, mergeFrom);
mergeTo; // is: [4, 5, 6, 7, 8, 9]
13、多点击事件获得点击的是哪一个
$('#IndexLink,#IndexLink1').on('click', function (e) {
var id=e.target.id;
id 取到的就是被点击的ID值
}
14、zepto 里面或 jquery 里返回 ajax json 串时,如果你的 json 串不规范(里面的键名,值,必须是双引号),就会跳出 success 方法,而且不履行里面的所有语句;
15、再JavaScript中下面做法会声明全局变量
在function外使用声明变量(不管是不是使用var) ;
在function内不是用var 声明变量 ;
直接赋值于window属性;
16、锚点定位方法
window.location.hash = 'm001';
<a name="m001">&nbsp;</a>
17、window.history.forward(1); 禁止页面后退;
18、 JS call 与aplly 用法
function Person(name, age) {
this.name = name;
this.age = age;
};
function Student(name, age, grade) {
Person.apply(this, arguments);
this.grade = grade;
};
var student = new Student('qian', 21, '1年级');
alert('name:' + student.name + ' ' + 'age:' + student.age + ' ' + 'grade:' + student.grade);
//也就是通俗1点讲就是:用student去履行Person这个类里面的内容,在Person这个类里面存在this.name等之类的语句,
//这样就将属性创建到了student对象里面
18)页面到底部自动加载内容:
var divH = document.body.scrollHeight,top = document.body.scrollTop,windowH = window.screen.availHeight;
if ((top + windowH) >divH) {
console.log('该他妈的加载内容了。');
}
console.log('网页正文全文高:' + document.body.scrollHeight + ' 网页被卷去的高: ' + document.body.scrollTop + ' 屏幕可用工作区高度:' + window.screen.availHeight);

其他精彩文章

jQuery教程(19)-jquery ajax操作之序列化表单

jQuery教程(18)-ajax操作之履行POST要求

jQuery教程(20)-jquery ajax + php 操作之为Ajax要求提供不同...

jQuery教程(21)-jquery ajax 回调函数

jQuery教程(22)-ajax操作之毛病处理

jQuery教程(24)-ajax操作之Ajax和事件

更多关于android开发文章


------分隔线----------------------------
------分隔线----------------------------

最新技术推荐