當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS一起学05:Date对象、封闭空间、函数传参和封装、获取非行间样式、字符串操作
生活随笔
收集整理的這篇文章主要介紹了
JS一起学05:Date对象、封闭空间、函数传参和封装、获取非行间样式、字符串操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Date對象 1. 獲取 oDate.getFullYear()?獲取年份 oDate.getMonth()+1??獲取月份 0-11----->1-12 oDate.getDate()?獲取日 1-31 var arr=['日','一','二','三','四','五','六']; var oDate=new Date();?? oDate.getHours()?獲取小時 ? ?oDate.getMinutes()?獲取分 ? ?oDate.getSeconds()?秒 ? ? alert(oDate.getMillisecons()); ? //毫秒 oDate.getDay()?獲取星期幾 0-6 ? ? 0:星期天 例:數碼時鐘 ? ??(1)獲取系統時間----Date 對象----getHours、getMinutes、getSeconds (2)??顯示系統時間----字符串連接、空位補零 (3)?字符串[下標]獲取一個字符,不兼容IE6/7,所以,設置圖片路徑。charAt方法----字符串.charAt(下標)兼容 2. 時間戳 oDate.getTime()----從1970年1月1日到現在的毫秒數 61秒= parseInt61/60 分 61%60 秒 3.?設置 (1)setFullYear(年,月,日 )?年:必填 月日:可選-----獲取完整的年份 setYear(); 獲取年 (2)setMonth(月,日)?月:必填 (3)setDate(日) ? ? ? ? ? ? ? ??oDate.setDate(31); ?//如果本月只有30天,會直接到下月第一天 ? ? ? ? ? ? ? ? oDate.setDate(0); ?上個月最后一天 ? ? ? ? ? ? ? ? oDate.setDate(30); ? ? ? ? ? ? ? ? alert(oDate.getDay()); 本月最后一天星期幾 oDate.setMonth(oDate.getMonth()+1); //設置下個月1號 // 因為本月是11月,getMonth()獲取到的是10,所以要獲取到11才是下個月 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.οnlοad=function(){ var oSpan=document.getElementsByTagName('span')[0]; tick(); setInterval(tick,1000); function tick(){ var oDate=new Date(); ?? var oDateTarget=new Date(); oDateTarget.setFullYear(2014,11,1); ? //注意此處月份應設置比目標小1 oDateTarget.setHours(0,0,0,0); var s=parseInt((oDateTarget.getTime()-oDate.getTime())/1000); var d=parseInt(s/86400); s%=86400; var H=parseInt(s/3600); s%=3600; var M=parseInt(s/60); s%=60; oSpan.innerHTML="距離2014年12月1日"+d+"天"+H+"時"+M+"分"+s+"秒"; } } date對象的另外的用法-----設置時間可以進位、退位 二、封閉空間 1. 定時器中的括號問題: setInterval(show,1000); ? ?//此處的show不能加括號,如果加則變成立刻執行,執行完之后,返回undefined function 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 a=12; function aaa(){ ?a=5; } aaa(); alert(a); (function bbb(){ ?a=34; })(); alert(a); ? ? //先后彈出5、34 利用封閉空間寫選項卡 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[i].οnclick=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); 利用封閉空間寫選項卡----封裝 var oBox=document.getElementById('box'); var aBtn=oBox.getElementsByTagName('input'); var aDiv=oBox.getElementsByTagName('div'); tab(0); tab(1); tab(2); function tab(index){ ? ? ? ? aBtn[i].οnclick=function() {? ? ? ? ? ? ? for(var i=0;i<aDiv.length;i++) {? ? ? ? ? ? ? ? ? ?aBtn[i].className=''; ? ? ? ? ? ? ? ? ?aDiv[i].className=''; ? ? ? ? ? ? }; ? ? ? ? ? ? this.className='active'; ? ? ? ? ? ? aDiv[index].className='active'; ? ? ? ?};? ? ? } 求和函數: (1)參數數量不固定的時候可用 (2)參數數組不是一個真正的數組,所以它不能用數組的方法 window.οnlοad=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) 例子: function sum(){ //alert(arguments.length); for(var i=0; i<arguments.length; i++){ result=0; 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.οnlοad=function(){ var oBox=document.getElementById('box'); oBox.οnclick=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]; ??//var 和 return 必須寫在行首 } 例二:函數封裝和隨機數配合使用 window.οnlοad=function(){ var oBox=document.getElementById('box'); oBox.οnclick=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+1)+n); } 例三:卷起廣告 window.οnlοad=function(){ var oBox=document.getElementById('box'); function fn(){ var timer=setInterval(function(){ var h=parseInt(getStyle(oBox,'height'))-10; if(h<=0){ clearInterval(timer); oBox.style.display='none'; } oBox.style.height=h+'px'; },30) } setTimeout(fn,3000); } function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; }else{ return getComputedStyle(obj,false)[attr]; } } 五、字符串操作 1、截取字符串 ? ?(1)?str.charAt(0)通過下標獲取字符串第幾位 ? 兼容 str.substring(1)只傳一個參數。從開始到最后 (2) str.substring(1,3)截取字符串【alert(name.ssubstring(name.lastIndexOf('.')+1));】 兩參數:第一個是開始,第二個是結束位置 ?但不包括結束位置 str.substring(n); ?截取字符串,從參數n開始到最后 2. ?indexOf(); indexOf() ??查找字符串,返回下標,無論是輸入兩個還是輸入詞組,都只找第一個字符的下標;如果沒有,則返回-1; ??應用:瀏覽器獨有的信息 window.navigator.userAgent; ? ?找不到返回-1 if(copy.indexOf('MSIE 6.0')==-1){alert('不是IE6');} var win=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('其它'); } 例一: function findSame(arr,n){ ? ? if(arr.indexOf){ ? ? ? ? return arr.indexOf(n); ? ? } ? ? for(var i=0;i<arr.length;i++){ ? ? ? ? if(arr[i]==n){ ? ? ? ? ? ? return i; ? ? ? ? ? ? } ? ? } ? ? return -1; } 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 ? 先比較左側第一位 中文:亂
總結
以上是生活随笔為你收集整理的JS一起学05:Date对象、封闭空间、函数传参和封装、获取非行间样式、字符串操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS一起学04:函数返回值、定时器、随机
- 下一篇: js中获取事件对象的方法小结