前端基本功--js实战6 11.07

一、时钟

1.第一步:得到现在的时分秒
第二步:秒针一次走6度、分针一次走6度、时针一次走30度。

    <script type="text/javascript">
        window.onload = function () {
           var hour = document.getElementById("h");
           var minute = document.getElementById("m");    
           var second = document.getElementById("s"); 
           // 定时器开始
           var ms  = 0;
           var s = 0;
           var m = 0; 
           var h =0;
           setInterval(function()
           {
                var date = new Date();
                ms = date.getMilliseconds();
                s = date.getSeconds() + ms/1000;//得到秒数 例如 1.3s 加后面的当前时间是因为可以有过度,否则一下子就转过去。
                m = date.getMinutes() + s / 60; //30.5分钟
                h =date.getHours() % 12 + m / 60 ;//9.5小时
                second.style.WebkitTransform = "rotate(" +s*6+ "deg)"//变化属性,旋转deg度。
                minute.style.WebkitTransform = "rotate(" +m*6+ "deg)";
                hour.style.WebkitTransform = "rotate(" +h*30+ "deg)";
                //
           },1000);           

        }
  **兼容问题WebkitTransform谷歌不认识,MozTransform火狐不认识。**

二、短信验证

1.按钮不可用:
btn.disabled = "disabled" || btn.disabled =true;
2.关闭定时器:clearInterval(定时器名称)
3.实例

  <script type="text/javascript">
       window.onload = function () {
         var btn = document.getElementById('btn');
         var m = 3;
         btn.onclick = function(){
           clearInterval(timer);//先清除以防中途点击调用定时器
           this.disabled = true;
           var that = this; //事件的调用者
           var timer = setInterval(send,1000);
           function send(){
             m--;
             if(m>=0){
             that.innerHTML = "还剩余 "+m+"秒";
             }
             else{
               that.innerHTML = "点击重新发送短信";
               that.disabled = false;
               clearInterval(timer); //清除定时器,否则会一直调用ifelse下去
               m = 3;
             }
           }
         }
       }
   </script>

4.因为 button是个双标签 所以要更改他的值, 使用 innerHTML 的,不是value。

三、定时器之setTimeout

1.类似于定时炸弹,只执行一次。
setTimeout("函数",时间) 时间:多长时间后执行
3秒关闭广告总结:设置隐藏函数,当调用定时函数执行隐藏函数。

<script>
function $(id) {
 return document.getElementById(id);
}
function hide(id){
 $(id).style.display = "none";
}
function show(id){
 $(id).style.display = "block";
}
setTimeout(close,2000);
function close(){
 hide("right");
 hide("left");
}
</script>

2.setInterval()和setTimeout()的区别:

  • setInterval() 是排队执行的 不管间隔时间,执行时间为主。
    假如 间隔时间是1秒, 而执行的程序的时间是2秒 上次还没执行完的代码会排队, 上一次执行完下一次的就立即执行, 这样实际执行的间隔时间为2秒。
  • setTimeout() 间隔时间+执行时间。
    延迟时间为1秒执行, 要执行的代码需要2秒来执行,那这段代码上一次与下一次的执行时间为3秒.。
  • JS 页面跳转: window.location.href = ”#” ; BOM
  • 函数自己调用自己:递归调用
    用if else再次调用settimeout :模拟使用 settimeout 来实现setinterval 的效果
  • arguments 对象
    arguments.length; 返回的是 实参的个数。
    arguments.callee; 返回的是正在执行的函数, 也是在函数体内使用。
    在使用函数递归调用时推荐使用arguments.callee代替函数名本身。
  • 例如: function fn() { console.log(arguments.callee); }
    这个callee 就是 : function fn() { console.log(arguments.callee); }

四、定时器之小米手机展示实例

  1.  写了三遍,写到头晕。
    

总结:把图片分成两部分,鼠标放在上面时,执行定时器,执行的函数为 满足条件时图片top变化,然后终止定时器。下面相同。鼠标离开时停止上面定时器。

       function $(id) {
                return document.getElementById(id);
            }
            var num = 0;
            var timer = null;
            $("picup").onmouseover = function(){
                clearInterval(timer);//如果不先清除其他定时器,会打架 不知道执行哪一个
               timer = setInterval(function(){
                     num -= 3;//出错,num应该在定时器中一直变化
                    num >= -1070 ? $("pic").style.top = num+"px" : clearInterval(timer);
                },20);
            }
            $("picdown").onmouseover = function(){
                clearInterval(timer);
                timer = setInterval(function(){
                     num += 3;
                    num < 0 ? $("pic").style.top = num+"px" : clearInterval(timer);
                },20);
            }
            $("picdown").parentNode.onmouseout = function(){
                clearInterval(timer);
            }

定时器的时间如果设置为0,不代表立即执行,代表立即插入队列,等所有程序执行完毕再执行!

五、运算符补充

1.一元操作符 ++, --, + ,- +5 -6
2.逻辑操作符 !, &&, ||
3.基本运算符 +, -, *, /, %
4.关系操作符 >, <, >=, <=, ===, ==, !=, !== ;
= 赋值 == 判断 === 全等
5.条件操作符 (三元运算符) ? :
6.赋值运算符 +=, -=, *=, /=, %=
a+=5 a= a + 5
7.逗号运算符 , var a=0,b=0;

  • 顺序
1. ()
2. !、-、++、--    (-10)  负号  正号
3.*、/、% 
4. +、-         (10-5)
5. <、<=、<、>=    
6. ==、!=、===、!==、  
7.&& 
8. || 
9.?: 
10. =、+=、-=、*=、/=、%=     赋值   1+2*3 

题:

  • a&&b 结果是什么?
    如果a 为假 ,则返回 a
    如果a 为真 ,则返回 b

    var aa = 0&&1;
    alert(aa) // 0
    var bb = 1&&0;
    alert(bb); //0
    var cc = 1&&10;
    alert(cc); // 10
  • a||b
    如果 a 为假 则返回b
    如果 a 为真 则返回a

    console.log(0||1); 1
    console.log(1||0); 1
    console.log(1||5); 1
    console.log(5||1); 5

var a = 1 && 2 && 3;
console.log(a); 3
var b = 0 && 1 && 2;
console.log(b); 0
var c = 1 && 0 && 2;
console.log(c); 0
%=
a+=3
a = a % 3;

六、字符串对象常用方法

  • 转换成字符串的几种方式
  1. +'' " 2+"ab"= "2ab"
  2. String() 转换为字符串
  3. toString(基数) 基数 = 进制
    var txt = 10; txt.toString(2) ; 二进制 结果是1010
  • 获取字符位置方法
    charAt();根据位置返回字符
    var txt = "; txt.charAt(2); 返回 c
    charCodeAt ():获取字符编码

unicode编码 是我们字符的唯一表示 。


图片1.png
  • 检测字符串长度
    思路:定义的判断函数中,先存储总的字符串长度,再定义一个存储字符编码的变量,for循环判断,当i小于字符串长度时,继续判断,字符编码0 - 127时长度加一,否则长度加二,最后返回字符串长度,在输出字符串长度判断函数!
    <script type="text/javascript">
        window.onload = function () {
        var txt = "abc哈哈哈"
        console.log(txt.length);  
        function panduan(str){
        var len = 0;
        var x = 0;
        for( i = 0 ;i <str.length;i++){
          x= str.charCodeAt(i); 
          if(x>=0 &&x<= 127)
         {
           len++;
         }
          else
         {
           len+=2;
         }
      }
        return len;
    }
        console.log(panduan(txt));
}
    </script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 第一部分 准入训练 第1章 进入忍者世界 js开发人员通常使用js库来实现通用和可重用的功能。这些库需要简单易用,...
    如201608阅读 1,330评论 1 2
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,716评论 2 17
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,204评论 0 4
  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 559评论 0 2
  • 随波逐流是无成者的显著特征。人云亦云是平庸者的首要标志。 随波逐流和人云亦云的根源在哪里?——缺少独立思考的能力。...
    林雪哲阅读 40,441评论 281 2,365