`
yumo12
  • 浏览: 17841 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JS一起学05:Date对象、封闭空间、函数传参和封装、获取非行间样式、字符串操作

    博客分类:
  • js
阅读更多
一、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.onload=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].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);
利用封闭空间写选项卡----封装
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].onclick=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.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)
例子:
        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.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];   //var 和 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+1)+n);
}
例三:卷起广告
window.onload=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   先比较左侧第一位
中文:乱
分享到:
评论

相关推荐

    javascript获取非行间样式的方法

    获取行间样式的方法普遍大家都会!而作为获取非行间样式的方法却在实际应用中也起到很关键的作用。此文档将涵盖此方法的要领。作为js刚入门的新手尤其需要学习!

    JavaScript兼容性总结之获取非行间样式案例

    主要介绍了JavaScript兼容性总结之获取非行间样式的相关资料,需要的朋友可以参考下

    JS非行间样式获取函数的实例代码

    主要介绍了JS非行间样式获取函数的实现代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    js和jquery中获取非行间样式

    样式又分为了行间样式和非行间样式。一般来说行间样式用的是比较少的,因为它能够作用的范围就只有一个元素,而非行间样式的作用范围可以是一类元素(即拥有相同德标签,或者说是有相同的类名,(当然id名不可能相同...

    取非行间样式2

    IE6与其他浏览器兼容,取非行间样式2: function getStyle(obj, name) { if(obj.currentStyle) { return obj.currentStyle[name]; } else { return getComputedStyle(obj, false)[name]; } }

    老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)

    众所周知,CSS样式有三种类型:行内样式、内部样式和外部样式,JavaScript获取CSS样式时分为两种情况:行内样式获取法 和 非行内样式获取法 。 一、行内样式获取相对简单,通过element.style.attr(元素.style.属性...

    js获取元素外链样式的方法

    本文实例讲述了js获取元素外链样式的方法。分享给大家供大家参考。具体分析如下: 一般给元素设置行内样式,如”div1″ xss=removed&gt;。如要获取它的样式,即可document.getElementById(“div1”).style.width来获取...

    javascript 缓冲运动框架的实现

    //获取非行间样式和行间样式 function getStyle(obj,name) { if(obj.currentStyle){ return obj.currentStyle[name]; } else { return getComputedStyle(obj,false)[name]; } } //获取非行间样式和行间样式 //...

    js获取元素的外链样式的简单实现方法

    但是如果样式是在外链link中的或者是页面的非行内样式,就获取不到了。 在标准浏览器中可以通过window.getComputedStyll(obj,null)[property]来获取外链样式,但是在ie浏览器中则是通过obj.currentStyle来获取。 ...

    我的tsReact应用

    参考链接 扩展放在同级compilerOptions配置上,不然会报错 " extends " : " ./paths.json "yarn add @babel/... 3.react的背景图片日期不成功,非行内样式下: 一种。 https链接约会 b。 css文件约会 C。 webpack build

    Linux文本处理工具使用详解

    1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来 grep是一个文本工具,是通过一行一行来匹配文本进行处理的; 通过grep命令,借助-v参数显示不匹配的行;...

    基于改进的串音误差的盲分离评价指标 (2012年)

    盲分离评价指标串音误差对于各分量能量差异大的源信号和全局矩阵为某些非行元素优势矩阵常常不能给出正确的分离评价。针对这一问题,文章通过构造全局权重矩阵和引入相关系数,提出了改进的串音误差评价指标,应用...

    java班级信息管理源码-Interview-Book:这不仅仅是面试问题,更是工程师的职业道路

    为了减少这种低效的筛选,我将一些零散的知识整理在一起。 Hortation 希望大家能够带着成为一个优秀的软件工程师的想法,来合理的利用这份资料。 这份资料并非单纯的前端工程师的面试题,我更希望它能够在工程师成长...

    面向长周期的交通状态反馈诱导策略

    为减少长周期与时变交通需求 间的矛盾及其他误差, 提出了状态与时间反馈策略相结合的混合策略. 仿真实验表明, 面对长周期时, 状态反馈策略 可以满足稳定性和准确性的双重要求, 混合策略则进一步提高了诱导的...

Global site tag (gtag.js) - Google Analytics