標籤:
一、Date對象1. 擷取oDate.getFullYear() 擷取年份oDate.getMonth()+1 擷取月份( 0-11)----->1-12oDate.getDate() 擷取日 1-31oDate.getHours() 擷取小時 oDate.getMinutes() 擷取分 oDate.getSeconds() 擷取秒 oDate.getMilliseconds(); //毫秒oDate.getDay() 擷取星期幾 0-6 0:星期天例:數位時鐘 (1)擷取系統時間----Date 對象----getHours、getMinutes、getSeconds (2) 顯示系統時間----字串串連、空位補零 (3) 字串[下標]擷取一個字元,不相容IE6/7,所以,設定圖片路徑用charAt(i)方法----字串.charAt(下標)相容2. 時間戳記oDate.getTime()----從1970年1月1日到現在的毫秒數3. 設定 (1)setFullYear(年,月,日 ) 年:必填 月日:可選-----擷取完整的年份 setYear(); 擷取年 (2)setMonth(月,日) 月:必填 (3)setDate(日) oDate.setDate(31); //如果本月只有30天,會直接到下月第一天 oDate.setDate(0); 上個月最後一天
alert(oDate.getDate());
本月最後一天星期幾oDate.setMonth(oDate.getMonth()+1); //設定下個月1號// 因為本月是8月,getMonth()擷取到的是7,所以要擷取到8月才是下個月oDate.setDate(0);alert(oDate.getDay());
(4)setHours(小時,分,秒,毫秒) 後面三個可選例子:本月第一天是周幾,本月共有多少天
var oDate=new Date();oDate.setDate(1);var week=oDate.getDay();alert(‘本月第一天是周‘+week);oDate.setMonth(oDate.getMonth()+1);oDate.setDate(0);var day=oDate.getDate();alert(‘本月的總天數是:‘+day);
例:倒計時window.onload=function(){ var oSpan=document.getElementsByTagName(‘span‘)[0]; var oDateTarget=new Date(); oDateTarget.setFullYear(2016,11,1); //注意此處月份應設定比目標小1 oDateTarget.setHours(0,0,0,0); tick(); //先執行一下,防止開始為空白 setInterval(tick,1000); function tick(){ var oDate=new Date(); var time=oDateTarget.getTime()-oDate.getTime(); var s=parseInt(time/1000); var D=parseInt(s/86400); var H=parseInt(s%86400/3600); var M=parseInt(s%86400%3600/60); var S=parseInt(s%86400%3600%60); oSpan.innerHTML="距離2016年12月1日"+D+"天"+H+"時"+M+"分"+S+"秒"; }}date對象的另外的用法-----設定時間可以進位、退位二、封閉空間1. 定時器中的括弧問題:setInterval(show,1000); //此處的show不能加括弧,如果加則變成立刻執行,執行完之後,返回undefinedfunction show(){ alert(1);}js中文法規範:大括弧不能直接跟小括弧,如下:function show(){ alert(1);}()但是,如果這樣即可:(function (){ alert(1);})() /相當於立刻執行這個函數。如果後面再加show(); 則會報錯函數每調用一次,就複製一份,就執行一次2. 封閉空間:多人配合時,避免函數重名問題 (fn1)(); //立即執行的匿名函數例一:兩個局部變數a在兩個不同的範圍下互不影響:function fn1(){ var a=44; alert(a);}fuction fn2(){ var a=55; alert(a);}例二:(function(){ var a=55; alert(a);})(); //立即執行的匿名函數 封閉空間 這個函數只能用一次利用封閉空間寫選項卡var oBox=document.getElementById(‘box‘);var aBtn=oBox.getElementsByTagName(‘input‘);var aDiv=oBox.getElementsByTagName(‘div‘);for(var i=0;i<aBtn.length;i++){ (function(index){ aBtn[index].onclick=function() { for(var i=0;i<aDiv.length;i++) { aBtn[i].className=‘‘; aDiv[i].className=‘‘; }; this.className=‘active‘; aDiv[index].className=‘active‘; }; })(i);}//function fn(index){ }; fn(i);等同於(function(index){ })(i);求和函數:(1)參數數量不固定的時候可用(2)參數數組不是一個真正的數組,所以它不能用數組的方法window.onload=function(){ function fn(){ var num=0; for(var i=0;i<arguments.length;i++){ num+=arguments[i]; } } fn(222,33,456);}三、函數傳參和封裝 1.參數的基本知識: (1)參數可以省 可以不傳 (2)在調用函數的括弧裡傳 在定義函數的括弧裡收 (3)參數名可以自訂 不用帶引號 (4)可以傳多個參數 中間用逗號分隔 (5)可以傳多類型2. 可變參(不定參):arguments 參數的個數可變,參數數組。參數數組, 有下標,有length,但並不是真正的數組,所以它不能用數組的方法。3. 例1:求和-----求所有參數的和(用arguments)例子: var result=0; function sum(){ for(var i=0; i<arguments.length; i++){ result+=arguments[i]; } return result; } alert(sum(12,6,8));4. 例2:CSS函數 (1)判斷arguments.length (2)給參數取名,增強可讀性 四、擷取非行間樣式(不能用來設定): (1)obj.currentStyle[attr]-----IE瀏覽器支援 (2)getComputedStyle(obj,false)[attr]------Chrome、fire fox、IE9、IE10 ···false處,可以隨便放任何值,如果不放則不相容firefox低版本。如果不寫第二個參數,不相容firefox低版本;放false顯得專業而已
只能取單一樣式,不能取複合樣式 擷取樣式:css(oDiv,‘width‘) 設定樣式:css(oDiv,‘width‘,‘200px‘)
例一:擷取樣式封裝window.onload=function(){ var oBox=document.getElementById(‘box‘); oBox.onclick=function(){ var w=parseInt(getStyle(this,‘width‘)); this.style.width=w+100+‘px‘; var oSpanH=getStyle(document.getElementById(‘s1‘),‘height‘); }}function getStyle(obj,attr){ return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj,false)[attr]; // return 必須寫在行首}例二:函數封裝和隨機數配合使用window.onload=function(){ var oBox=document.getElementById(‘box‘); oBox.onclick=function(){ var w=parseInt(getStyle(oBox,‘width‘)); var r=rnd(10,100); w+=r; oBox.style.width=w+‘px‘; }}function rnd(n,m){ return parseInt(Math.random()*(m-n)+n);}五、字串操作1、截取字串 (1) str.charAt(0)通過下標擷取字串第幾位 相容 str.substring(1)只傳一個參數。從開始到最後 (2) str.substring(1,3)截取字串 兩參數:第一個是開始,第二個是結束位置 但不包括結束位置
str.substring(n); 截取字串,從參數n開始到最後
2. indexOf();indexOf() 尋找字串,返回下標,無論是輸入兩個還是輸入片語,都只找第一個字元的下標;如果沒有,則返回-1; 應用:瀏覽器專屬的資訊 window.navigator.userAgent;
判斷瀏覽器資訊:var win=window.navigator.userAgent.toLowerCase();if(win.indexOf(‘Chrome‘)!=-1){ alert(‘chrome‘);} else if(win.indexOf(‘Firefox‘)!=-1){ alert(‘f‘);} else if(win.indexOf(‘MSIE‘)){ alert(‘ie‘);} else{ alert(‘其它‘);}
3. lastIndexOf();從後面開始找,但同樣返回下標 。 跟indexOf相反,是從後面開始找的,找到了返回從左至右順序的下標,找不到返回-1 應用:找一個字串的副檔名var string=‘a.b.cd.efg.c.d.fffd.png‘;alert(string.substring(str.lastIndexOf(‘.‘)+1));4. 字串拆分成數組---split( )5. 把英文字母轉成大寫/小寫---toUpperCase()/toLowerCase();alert(win.toUpperCase());alert(win.toLowerCase());var win=window.navigator.userAgent.toLowerCase();5. 字串排序英文:按照字典序 alert(‘f‘<‘g‘); ---->true字串數字:按照字典序 alert(‘624‘>‘53‘)-->true 先比較左側第一位中文:亂
Date對象,封閉空間,函數傳參和封裝,擷取非行間樣式,字串操作