**JavaScript是一个单线程、非阻塞、异步、解释性语言。**
js常用函数
parseInt
// 可直接用parseInt取出元素的样式数值(我以前都是去掉px再parseInt)
// 返回int数值
parseInt(element.style.height);
js 判断变量是否正常、能用
var test1;
if(test1 == null || test1 == undefined || test1 == '' || test1 == 0 ){
console.log('test1出错,无法继续执行')
} else{
console.log('test1正常,可继续执行代码')
}
上面的可以简化成如下代码 ↓
if(test1){
console.log('test1正常,可继续执行代码');
// 继续执行的代码
var test2 = test1 + ',你好';
}
// 或者
if(!test1){
console.log('test1不正常,退出本函数,不往下执行')
return;
}
// 继续执行的代码
var test2 = test1 + ',你好';
获取地址栏参数
/**
* 获取地址栏参数
* @param name
* @returns {*}
*/
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return decodeURIComponent(r[2]);
}
return null;
}
对象数组去重
/**
* 对象数组去重
* @param arr
* @param key 唯一标识符
* @returns {*}
*/
function uniqueObjectArr(arr, key) {
// 转成一维数组
var onlyKeyList = arr.map(function (r) {
return r[key];
});
// 去重
return arr.filter(function (r, rI) {
return onlyKeyList.indexOf(r[key], 0) === rI;
});
}
js setTimeout
setTimeout
能够让某个函数,在经过一段预定时间后才开始执行,比如,等HTML的input框加载好了再执行checked操作。
// 用setTimeout实现动画
// setTimeout(函数, 毫秒)
var btnDom = document.getElementsByClassName('layui-inline site-down')[0];
btnDom.style.marginLeft = '0px';
var toLeft = true;
function moveBtn(){
var currMrLeft = parseInt(btnDom.style.marginLeft);
if(toLeft){
if(currMrLeft > 1200){
currMrLeft --;
toLeft = false;
}else if(currMrLeft >= 0){
currMrLeft ++;
}else{
currMrLeft ++;
}
}else{
currMrLeft --;
if(currMrLeft < -1200){
toLeft = true;
}
}
console.log(currMrLeft );
btnDom.style.marginLeft = currMrLeft + 'px';
task1 = setTimeout("moveBtn()",2);
}
task1 = setTimeout("moveBtn()",2);
// 清除定时任务
clearTimeout(task1);