//使用setTimeout遞歸實現(xiàn)setInterval
setTimeout和setInterval的區(qū)別:setInterval的執(zhí)行機制是每到一
定時間就固定地往隊列里面推執(zhí)行函數(shù)晚吞,而不會管之前的事件是否執(zhí)行完柜候,而
一旦執(zhí)行的某些事件如:比較耗時的DOM操作等事件易桃,而時間間隔又特別短時,
就會導致后面的事件不等前面的執(zhí)行完就會再次去執(zhí)行,長時間的執(zhí)行隐轩,積累
就會導致任務過多窗慎,卡頓,使用setTimeout的遞歸寫法來模擬setInterval惯悠,
可以在一定程度上解決掉這個長時間運行的卡頓問題邻邮,因為setTimeout的執(zhí)行
機制是等待上次的任務執(zhí)行完才會去再次執(zhí)行這個,但是這個方法可能也不夠完
善克婶,長時間的運行可能會積累很多東西筒严,
var index = 0;
var setTime= null;
var setFun = function () {
clearTimeout(setTime);
setTime = setTimeout(function () {
console.log(index);
index ++;
setFun();
},200)
};
setFun();
//傳入秒數(shù)返回時分秒
function formatTime(s) {
var hour = parseInt( s/3600 ),minute = parseInt((s % 3600) /60),second = parseInt( s%60 );
return (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second);
}
console.log(formatTime(3666)); // 返回 01:01:06
//傳入時間返回時分秒
function time(start,end){ //默認結(jié)束時間大于開始時間,傳空為當前時間
var startTime, endTime;
endTime = startTime = new Date().getTime();
function formatTime(t) {
var time = t; //start時間格式如果如:2019-08-08 20:08:08這樣的格式情萤,在某些機型會報錯鸭蛙,
time = time.replace(/-/g, ':').replace(' ', ':');
time = time.split(':'); //轉(zhuǎn)換成[2019,8,8,20,8,8]
return new Date(time[0], (Number(time[1]) - 1), time[2], time[3], time[4], time[5]).getTime();
}
if (start.length > 0)startTime = formatTime(start);
if (end.length > 0) endTime = formatTime(end);
var s = (endTime - startTime) / 1000;
if (s <= 0) return '00:00:00';
var hour = parseInt(s / 3600);
var minute = parseInt((s % 3600) / 60);
var second = parseInt(s % 60);
return (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second);
}
console.log(time('','2019-3-29 12:00:00')); //返回倒計時 10:10:10
//html和DOM的區(qū)別
<input type="text" id="input" value='123'>
setInterval(function () {
console.log(document.getElementById('input').getAttribute('value'));
console.log(document.getElementById('input').value);
console.log($('#input').val());
//加入輸入456,則打印出來為
//123 //打印的html屬性值筋岛,不能更改
//123456 //打印的DOM值娶视,可以更改
//123456 //打印的DOM值,可以更改
},2000)
JS零碎知識記錄
最后編輯于 :
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門违孝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刹前,“玉大人,你說我怎么就攤上這事雌桑±恚” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵校坑,是天一觀的道長拣技。 經(jīng)常有香客問我千诬,道長,這世上最難降的妖魔是什么膏斤? 我笑而不...
- 正文 為了忘掉前任徐绑,我火速辦了婚禮,結(jié)果婚禮上莫辨,老公的妹妹穿的比我還像新娘傲茄。我一直安慰自己,他們只是感情好沮榜,可當我...
- 文/花漫 我一把揭開白布盘榨。 她就那樣靜靜地躺著,像睡著了一般蟆融。 火紅的嫁衣襯著肌膚如雪草巡。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼枪孩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藻肄?” 一聲冷哼從身側(cè)響起蔑舞,我...
- 正文 年R本政府宣布,位于F島的核電站依溯,受9級特大地震影響老厌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜黎炉,卻給世界環(huán)境...
- 文/蒙蒙 一梅桩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拜隧,春花似錦、人聲如沸趁仙。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽雀费。三九已至干奢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盏袄,已是汗流浹背忿峻。 一陣腳步聲響...