js之数据域
1.
浏览器:
找一些东西,var (function ) 参数 预先存储 var function
1.
所有的变量在代码正式运行之前,全都赋了一个值,undefined
所有函数,在正式运行之前都是整个函数块。
2.逐行解读代码
表达式可以改变预解析的值(函数不可以)
2.
window .onload = function () {
var a = 1 ;
function f1 () {
var b = 2 ;
var c = 5 ;
function f2 () {
c = 3 ;
alert(a + b + c);
}
f2();
};
f1();
alert(c);
window.c
};
3.
一直找到全局变量为止!
1. 函数内->2. 参数->3. 上一个作用域->4. 全局
window.xxx 如果没有不会报错,undefined 。
function f1 () {
alert(c);
c = 5 ;
代码一行一行执行,c还没有变为全局变量时就已经报错了。
}
4.
(function () { })();匿名函数直接调用。立即执行,不污染全局。
(function (window,undefined) { })(window);
传入window是为了提高速度,在多个函数的嵌套中,不需要去找全局变量
不传入undefined 是为了安全,因为ff,IE可以对其赋值,undefined = 4 ;
直接在内部声明var undefined ;
var a = 1 ;
function test (a) {
alert(a);
};
test(); undefined ;
在不传入参数的情况下,默认其实已经传入参数为undefined .
js数组
1.
json形式的对象 key ---- value ;
var json = {
'name' : 'Aifald' ,
'age' : 32
}
2.
数组的几种创建方式:
var arr = new Array();
var arr = new Array(10 );
var arr = new Array('10' );
var arr = new Array(1 ,2 ,3 ,4 );
var arr = [];
删除数组的方式:
arr.length = 0 ;
arr = []
var string = 'string' ;
string .length = 1 ;
alert(string .length);
str = 'paulo' ;
3.
pop(); 返回最后删除的元素
shift(); 返回最先删除的元素
push(); 返回长度
unshift(); 返回长度
arr.unshift(arr.pop()) 将最后的加在前面
arr.push(arr.shift()) 将最前面的加在最后面
splice(start,length,add); 返回删除的元素(数组)
利用其删除特性可以进行数组去重。(双重循环)
4. 排序
默认的情况下,所有的全部按照(编码进行比较)排序。
var arr = [1 ,2 ,3 ,78 ,8 ];
arr.sort();
arr.sort(function (a,b) {
return a - b;
});
arr.sort(function (a,b) {
return Math.random() - 0.5 ;
Math.round(Math.random() * (1 - (-1 ))) + (-1 );
});
console.log(Math.round(Math.random() * (y - x)) + x);
5.
console.log(arr.concat(arr1,arr2));
console.log(arr);
arr.reverse();
var newStr = str.split('' ).reverse().join ('' );
push(),pop(),shift(),unshift(),splice(),concat(),reverse(),sort();
js之日期
1.
var myDate = new Date ();
myDate.getYear();
myDate.getFullYear();
myDate.getMonth();
myDate.getDate();
myDate.getDay();
myDate.getTime();
myDate.getHours();
myDate.getMinutes();
myDate.getSeconds();
myDate.getMilliseconds();
myDate.toLocaleDateString();
var mytime=myDate.toLocaleTimeString();
myDate.toLocaleString( );
2.
oImg[i].src = 'img/' + str1.charAt(i) + '.jpg' ;
根据每个字符数字来决定用哪张图片。
3.
创建倒计时
iNow = new Date ();
time = Math .floor((iNew - iNow) / 1000 );
var str = Math .floor(time/86400 ) + '天' + Math .floor(time%86400 /3600 ) + '时' + Math .floor(time%86400 %3600 /60 ) + '分' + Math .floor(time%60 ) + '秒' ;
aInp[1 ].value = str;
if (time <= 0 ) {
clearInterval(timer);
alert('0' );
}
},1000 );
js之滚轮
1.
滚轮事件:ie/chrome :onmousewheel
firefox: DOMMouseScroll 必须用addEventListener
2. 属性(数字):event .wheelDelta 120 -120
event .detail -3 3
3. if (event .wheelDelta) {
b = event .wheelDelta > 0 ? true : false ;
} else {
b = event .detail < 0 ? true : false ;
}
根据属性值的正负判断是否为滚轮向上或者向下
4. return false 阻止的默认行为是DOM0事件 obj.on事件 = fn;和IE下的attachEvent
addEventListener绑定的事件阻止默认行为用 preventDefault;
cookie
5. 一个域名下的cookie个数是有限的,而且不同浏览器的个数不一样。
每一个cookie存放内容的大小有限,每个浏览器也是不一致的。
如果想长时间存储cookie必须设置一个过期的时间。
cookie默认是临时存储的。当关闭浏览器进程的时候自动销毁。
6. IE:必须expires= + 字符串格式的时间
date.toGMTString();
内容最好编码存放:处理一些特殊的字符 \n等。
encodeURI(string );
decodeURI(string );
cookie是以 (; )分号和空格分隔
document.cookie.split('; ' )
删除一个cookie只要设置过期的时间就可以给了。
document.cookie = 'username = ' + encodeURI('你好Airfald\npaulo' ) + ';expires = ' + oDate.toGMTString();