`
yumo12
  • 浏览: 18624 次
  • 性别: 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   先比较左侧第一位
中文:乱
分享到:
评论

相关推荐

    基于C++开发的WEB服务器,支持C/C++、Python、Java等多语言混合开发WEB应用

    基于C++开发的WEB服务器,支持C/C++、Python、Java等多语言混合开发WEB应用

    基于STM8单片机的TM1615七段数码管驱动(模拟I2C).zip

    基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助

    基于STM8单片机的电位器输入控制继电器输出实验.zip

    基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助

    网络安全CTF靶场之rce-labs

    该靶场仅供学习使用!

    python爬虫豆瓣电影TOP250,以及数据化分析程序源代码+数据

    电影详情链接 图片链接 影片中文名 影片外国名 评分 评价人数 概况 相关信息 https://movie.douban.com/subject/1292052/ https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg 肖申克的救赎   The Shawshank Redemption 9.7 2529468 希望让人自由 导演: 弗兰克·德拉邦特 Frank Darabont   主演: 蒂姆·罗宾斯 Tim Robbins ... 1994   美国   犯罪 剧情 https://movie.douban.com/subject/1291546/ https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2561716440.jpg 霸王别姬 9.6 1880353 风华绝代 导演: 陈凯歌 Kaige Chen   主演: 张国荣 Leslie Cheung 张丰毅 ........

    汽车中间件市场调研报告:2023年全球汽车中间件市场销售额达到了78亿美元

    汽车中间件市场调研报告:2023年全球汽车中间件市场销售额达到了78亿美元 在数字化转型的浪潮中,汽车中间件作为连接硬件与软件的关键桥梁,正引领着汽车行业的新一轮变革。随着全球汽车产业的快速发展,中间件市场规模持续扩大,展现出前所未有的增长潜力。然而,面对复杂多变的市场环境和不断涌现的新技术,企业如何精准把握市场脉搏,实现可持续发展?本文将深入探讨全球及中国汽车中间件市场的现状、趋势及竞争格局,为您揭示咨询的重要性。 市场概况: 根据QYResearch(恒州博智)的统计及预测,2023年全球汽车中间件市场销售额达到了78亿美元(约7803百万美元),预计2030年将达到156亿美元(约15630百万美元),年复合增长率(CAGR)为10.3%(2024-2030)。这一数据不仅彰显了中间件市场的强劲增长动力,也预示着未来巨大的市场空间。 技术创新与趋势: 随着自动驾驶、车联网等技术的不断发展,汽车中间件正面临着前所未有的技术挑战与机遇。新一代中间件需要具备更高的实时性、更低的延迟以及更强的数据处理能力,以满足复杂多变的汽车应用场景。同时,云计算、大数据、人工智能等技术的融合应用,将进

    python语言mp3pl爬虫程序代码QZQ.txt

    python语言mp3pl爬虫程序代码QZQ

    小语种字体TTF文件转PNG图片的方法

    # 小语种字体TTF文件转PNG图片的方法 ## 准备工作 1. 下载python3.9,推荐3.6~3.9,几个依赖包在这个版本运行的好。 2. 下载 FontForge-mingw-w64 ,可自行下载,或从文末打包好的工具包直接使用。 3. 下载需要导出的字体ttf文件,最好先装在本机系统上。 ## 导出方法 1. 把 `tts2png2.py` 文件复制到软件的bin目录下。 2. 修改 `tts2png2.py` 文件中的字体路径,注意Windows用双斜杠。 3. 从bin目录打开终端(管理员模式启动)。 4. 运行脚本 `./ffpython .\tts2png2.py`。

    26页-基于AI人工智能的智慧校园综合解决方案AI+智慧校园综合解决方案.pdf

    在21世纪的科技浪潮中,人工智能(AI)无疑是最为耀眼的明星之一,它以惊人的速度改变着我们的生活、工作乃至整个社会的运行方式。而在人工智能的广阔领域中,大模型(Large Models)的崛起更是开启了智能技术的新纪元,引领着AI向更加复杂、高效、智能的方向发展。本文将深入探讨人工智能大模型的内涵、技术特点、应用领域以及对未来的影响。 一、人工智能大模型的内涵 人工智能大模型,顾名思义,是指具有庞大参数规模和数据处理能力的AI模型。这些模型通过深度学习算法,在海量数据上进行训练,能够学习到丰富的知识表示和复杂的模式识别能力。与传统的小型或中型模型相比,大模型在理解自然语言、生成高质量内容、进行跨模态信息处理等方面展现出前所未有的优势。它们不仅能够执行特定的任务,如图像识别、语音识别,还能进行创造性的工作,如文本生成、音乐创作,甚至在某些情况下展现出接近或超越人类的智能水平。 二、技术特点 海量数据与高效训练:大模型依赖于庞大的数据集进行训练,这些数据涵盖了广泛的主题和情境,使得模型能够学习到丰富的语义信息和上下文理解能力。同时,高效的训练算法和硬件加速技术,如TPU(Tensor Processing Unit)和GPU,使得大规模模型的训练成为可能。 自注意力机制与Transformer架构:许多领先的大模型采用了Transformer架构,特别是其自注意力机制,这种设计使得模型在处理序列数据时能够捕捉到长距离依赖关系,极大地提高了模型的表达能力和泛化能力。 多任务学习与迁移学习:大模型通常具备多任务学习的能力,即在一次训练中同时学习多个任务,这有助于模型学习到更通用的知识表示。此外,迁移学习使得这些模型能够轻松适应新任务,只需少量额外数据或微调即可。

    下垂控制-基于T型三电平逆变器的下垂控制,电压电流双闭环,采用LCL滤波,SPWM调制方式 1.提供simulink仿真源文件 2.提供下垂控制原理与下垂系数计算方法 3.中点平衡控制,电压电流双闭环

    下垂控制-基于T型三电平逆变器的下垂控制,电压电流双闭环,采用LCL滤波,SPWM调制方式 1.提供simulink仿真源文件 2.提供下垂控制原理与下垂系数计算方法 3.中点平衡控制,电压电流双闭环控制 4.提供参考文献

    一个仿大众点评、美团的城市选择器,使用如同Rx一样优雅,并且UI和城市数据可以自定义.zip

    城市选择器一个仿大众点评的城市快速选择器, 最少只需 一行 代码即可启动城市选择器, 支持页面样式修改,多元化自定义截屏 版本日志V0.4.6优化地理位置设置时有时会设置不成功问题修复其他若干问题修改UI默认主题色V0.4.5修改设置位置信息方式,由之前必须在打开页面之前获取位置信息改为允许用户在打开页面后设置位置信息,具体使用方式见 Step3简化配置项,不需要在AndroidManifest中再注册Activity,并默认隐藏titlebarV0.4.3修复更新数据库表结构后第一次进入会闪退问题V0.4.0数据库表结构修改,增加了高德地图citycode设置gps城市的api略有改动见 Step3V0.3.3紧急修复一个可能导致内存泄漏问题优化提高滑动检索效率隐藏下拉刷新labelV0.3.1在搜索框后面添加一个清空搜索框按钮修复搜索框中输入空格会搜索出全部城市问题修复搜索结果弹出框中文字在不同theme下显示不同颜色问题,现在已统一为黑色其他调用时参数合法性校验V0.3.0简化api调用形式,修改为Rx形式,见操作步骤

    慢性病大数据分析处理.zip

    慢性病大数据分析处理慢性病项目

    Multisim单片机资源单片机C语言程序设计实训100例

    Multisim单片机资源单片机C语言程序设计实训100例提取方式是百度网盘分享地址

    PMSM永磁同步电机最大转矩电流比MTPA控制仿真,弱磁控制仿真,前馈补偿仿真程序,详细解析教程文档 这是一份非常完美的仿真文件及详细教程,从仿真效果图看转速、电流及转矩跟随非常稳定 该算法架构包

    PMSM永磁同步电机最大转矩电流比MTPA控制仿真,弱磁控制仿真,前馈补偿仿真程序,详细解析教程文档。 这是一份非常完美的仿真文件及详细教程,从仿真效果图看转速、电流及转矩跟随非常稳定。 该算法架构包含如下模块: 1)SVPWM矢量控制模块 2)转速环PI调节器、电流环PI调节器; 3)MTPA调节器; 4)弱磁控制器; 5)前馈补偿; 一份该仿真的算法说明文档,每一步都有详细介绍如何搭建,包括环路参数怎么算,拿来做毕设或者学习都很方便; 几篇参考文献; 一篇作者自己写的算法总结,让你少走弯路; 两个视频;

    手绘卡通儿童人物幼儿园教学课件模板.pptx

    手绘卡通儿童人物幼儿园教学课件模板

    Simulink电动汽车仿真模型(包含行驶阻力模型,工作模式切模型,驾驶员模型,PID控制模块等,NEDC,CLTC工况仿真结果)东西很全

    Simulink电动汽车仿真模型(包含行驶阻力模型,工作模式切模型,驾驶员模型,PID控制模块等,NEDC,CLTC工况仿真结果)东西很全

    2-Perfect Backup v3.3.0 全功能备份神器,支持多种备份方式,免费使用,可商用

    是一款全功能的备份软件,支持增量备份、差异备份、完全备份和同步备份,帮助用户轻松保护关键文件。支持多种存储选项,包括本地硬盘、USB驱动器、网络文件夹、云存储和 FTP 服务器等。 【使用方法】: 1. 下载并安装 Perfect Backup。 2. 打开软件,选择备份类型(增量、差异、完全或同步)。 3. 指定源文件和目标存储位置。 4. 设置备份计划,选择备份频率。 5. 点击“开始备份”,执行备份任务。

    基于STM8单片机的光敏电阻模拟量ADC输入(带中断).zip

    基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助

    HTML5实现好看的创意房屋设计公司网页源码.zip

    资源描述: HTML5实现好看的创意房屋设计公司网页源码,好看的创意房屋设计公司网页源码,创意房屋设计公司网页源码模板,HTML创意房屋设计公司网页源码,内置酷炫的动画,界面干净整洁,页面主题,全方位介绍内容,可以拆分多个想要的页面,可以扩展自己想要的,注释完整,代码规范,各种风格都有,代码上手简单,代码独立,可以直接运行使用。也可直接预览效果。 资源使用: 点击 index.html 直接查看效果

Global site tag (gtag.js) - Google Analytics