前端基本功--js实战7 11.09

一、根据字符返回位置

跟charAt() 相反根据位置返回字符
indexOf(“字符”);找不到返回-1,索引号从0开始 。
lastIndexOf(参数:索引字符串) 从后面开始找,返回的值是从前往后数的。

二、网址编码

一个网址有自己的网址, 不同页面都有自己id网址, 我们把网址送入到后台,但是后台再处理的时候不认识比如换行等特殊符号的 ? 所以我们要实现编码,然后再传到后台。

  • encodeURIComponent() 函数可把字符串作为 URI 组件进行编码
    decodeURIComponent() 函数可把字符串作为 URI 组件进行解码
var url = "http://www.itcast.cn?name=andy";
console.log(encodeURIComponent(url));  // 编码
var afterUrl = encodeURIComponent(url);
console.log(decodeURIComponent(afterUrl));  // 解码

三、操作字符串

  1. 合并字符串
    concat()
  <script type="text/javascript">
        window.onload = function () {
            function $(id){return document.getElementById(id).innerHTML;}
            function ctt(id,txt){
                document.getElementById(id).onclick = function(){
                   this.nextSibling.innerHTML = txt; //忽略了要加的文字要放在btn的兄弟节点span中
                }
            }
            ctt("btn",$("div1").concat($("div2")));//error:btn是上面的id 要加引号、函数名打错了
}
  1. 取字符串
  • slice()
    slice(取字符串的起始位置, [结束位置]) ; []是可选的,起始位置一定要有,结束位置可以省略。
    var txt = “abcedfgh ”; txt.slice(3) ; edfgh
    从 txt 里面字符的 第 3(索引号)个开始取,结束位置省略,一直取到最后一个。
    slice(3,6) edf
    从 第3个开始取,取到第6索引号的位置,还是从左边的第0个开始数。但是不包括6,取到第6号的意思!
    slice(-1) f
    起始位置可以是负数,意思是从右往左开始取第一个。
  • substr()
    substr(起始位置,[取的个数]) 同上。
    不写取的个数: 默认从起始位置一直取到最后 。
    取的个数:是指从起始位置开始,往后面数几个。
var txt = “abcdefghijk”;
txt.substr(3,4);   //defg

从第3个(d) 开始取4个数。
substr(-1) 少用,ie678会报错。

兼容性的写法 :
onBtnClick("btn",div1.substr(div1.length-1,1)); // 兼容的写法,取最后一个

  • substring()
    和slice一样的,但是有一点不同
    substring(3,6)
    substring 始终会把小的值作为起始位置,大的值作为结束位置。
    例如: substring(6,3) 实际中 自动变成 substring(3,6);

四、保留小数位数

122340.12345 保留两位有效小数 122340.12 | substr(0, .+3)

  1. console.log(str.substr(0,str.indexOf(".")+3));
    通过 indexOf返回小数点的位置,再截取字符(要转换为字符串,数字不能进行比较)
  2. var PI = 123.123456 ;console.log(parseInt(PI*100) /100);
    先乘以100取整,再除以100 (如果是三位就变成1000)
  3. console.log(PI.toFixed(2));
    保留 2位 小数
  • 得到上传文件格式小实例
   <script type="text/javascript">
       window.onload = function () {
           var file = document.getElementById("file");
           file.onchange = function(){
               var path = this.value;
               var typ = path.substr(path.lastIndexOf("."));
               alert(typ);
           }
           //error:先获取当前文件的路径,通过路径索引substr方法和文件后缀!
}
   </script>
  • 大小写转换
  1. toUpperCase,转换为大写(参数: 无)
  2. toLowerCase,转换为小写(参数:无)
    asdf.toUpperCase() 结果就是: ASDF
    $("txt").value.toUpperCase();
    substr(path.lastIndexOf(".")).toUpperCase();

五、无缝滚动

思路:一开始显示两张图,那么就先滚动所有图之后再加上开始两张图在最后,滚动结束left的值回到开始,但是前面的滚动结束也是显示前两张。

           var scroll = document.getElementById("scroll");
           var ul = scroll.children[0];//获取第一个孩子ul
           var num = 0;
           var timer = null;
           timer = setInterval(gun,20);  
           function gun(){
               num--;
               num<=-1200?num = 0:num; //如果超过了四张图的宽度就回到前两张
               ul.style.left = num +"px"; 
           }
           scroll.onmouseover = function(){
               clearInterval(timer);
           }
            scroll.onmouseout = function(){
               timer = setInterval(gun,20);
        //使定时器的速度从头开始,上一个定时器timer已经被清了,
          如果不用timer = ,没名字再放上鼠标还是清不掉
           }

六、匀速运动

var btn = document.getElementById('btn');
           var box = document.getElementById('box');
           var num = 0;
           btn.onclick  = function(){        
               var timer = null;
               timer = setInterval(function(){
                   num++;
                   if(num>=500){
                       clearInterval(timer);
                   }
                   else {
                       box.style.left = num+"px";
                   }
               },50)
           } 

七、缓动动画

  • 等差数列
    一个盒子初始值是0,要走到 400px的位置
    leader 0 target 400
    box.style.left = xxxx + “px”
    leader = leader + (target - leader ) /10 ;可以实现减速效果

八、焦点图和左右轮播图(需要缓动动画)

鼠标滑过序号出现图片的轮播图:
获取每个圆点的索引值,鼠标滑过类名变为当前(修改圆点样式),target值变成当前索引值*宽度。

        var dd = document.getElementById("dd");
          var ul = dd.children[0].children[0];
          var ol  = dd.children[1];
          var lis  = ol.children;
          var  leader = 0,target = 0;
          for(var i = 0 ;i <lis.length; i++) {
              lis[i].index = i;
              lis[i].onmouseover = function(){
                  for(var j= 0; j <lis.length;j++){
                      lis[j].className = "";
                  }
                  this.className="current";
                  target = -this.index *490;
              }
          }
          
          setInterval(function(){
              leader = leader + (target - leader) / 10;
              ul.style.left = leader+"px";
          },30);

左右轮播图,左右箭头,鼠标滑过显示,滑出隐藏。
点击left向左移动一个宽度,<=0时设置=0;防止左边溢出,>=四个宽度时 =四个宽度,防止右边溢出。

          function $(id){
              return document.getElementById(id);
          }
          $("dd").onmouseover = function(){
              $("jiantou").style.display = "block";
          }
          $("dd").onmouseout = function(){
              $("jiantou").style.display = "none";
          }    
          $("right").onclick = function(){
              target -= 520; 
          }
           $("left").onclick = function(){
              target += 520; 
          }
          var leader=0,target = 0;
          setInterval(function(){
              if (target>=0) {
                  target = 0;
              }
              else if(target<=-2080){
                  target=-2080;
              }
              leader = leader + (target - leader) / 10;
              $("imgs").style.left = leader+"px";
          },30);  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • 根据字符返回位置 跟 charAt() 相反的 根据 字符 返回的是 位置 1 /返回前面起第一个字符...
    越IT阅读 588评论 1 3
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,191评论 0 4
  • 变量命名、声明、赋值 1.必须以字母、下划线或美元符号开头,后面可以跟字母、下划线、美元符号和数字。2.变量名区分...
    wq04200阅读 606评论 0 1
  • 那时我有一群说走就走的人儿,可是我发现我少了一辆车,,, 当我有了那辆车时,我才明白我已经没了那群人...
    b826c5e4fc8c阅读 90评论 0 1
  • 目录 上一篇 一个初三学生面临的最大压力,看上去似乎是中考,事实上这并不是所有人都要走的路。因为义务教育就到初三结...
    刘白月阅读 409评论 0 1