前端基本功--js實戰(zhàn)7 11.09

一、根據(jù)字符返回位置

跟charAt() 相反根據(jù)位置返回字符
indexOf(“字符”);找不到返回-1,索引號從0開始 。
lastIndexOf(參數(shù):索引字符串) 從后面開始找,返回的值是從前往后數(shù)的。

二、網(wǎng)址編碼

一個網(wǎng)址有自己的網(wǎng)址, 不同頁面都有自己id網(wǎng)址, 我們把網(wǎng)址送入到后臺,但是后臺再處理的時候不認(rèn)識比如換行等特殊符號的 ? 所以我們要實現(xiàn)編碼,然后再傳到后臺。

  • encodeURIComponent() 函數(shù)可把字符串作為 URI 組件進(jìn)行編碼
    decodeURIComponent() 函數(shù)可把字符串作為 URI 組件進(jìn)行解碼
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的兄弟節(jié)點span中
                }
            }
            ctt("btn",$("div1").concat($("div2")));//error:btn是上面的id 要加引號、函數(shù)名打錯了
}
  1. 取字符串
  • slice()
    slice(取字符串的起始位置, [結(jié)束位置]) ; []是可選的,起始位置一定要有,結(jié)束位置可以省略。
    var txt = “abcedfgh ”; txt.slice(3) ; edfgh
    從 txt 里面字符的 第 3(索引號)個開始取,結(jié)束位置省略,一直取到最后一個。
    slice(3,6) edf
    從 第3個開始取,取到第6索引號的位置,還是從左邊的第0個開始數(shù)。但是不包括6,取到第6號的意思!
    slice(-1) f
    起始位置可以是負(fù)數(shù),意思是從右往左開始取第一個。
  • substr()
    substr(起始位置,[取的個數(shù)]) 同上。
    不寫取的個數(shù): 默認(rèn)從起始位置一直取到最后 。
    取的個數(shù):是指從起始位置開始,往后面數(shù)幾個。
var txt = “abcdefghijk”;
txt.substr(3,4);   //defg

從第3個(d) 開始取4個數(shù)。
substr(-1) 少用,ie678會報錯。

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

  • substring()
    和slice一樣的,但是有一點不同
    substring(3,6)
    substring 始終會把小的值作為起始位置,大的值作為結(jié)束位置。
    例如: substring(6,3) 實際中 自動變成 substring(3,6);

四、保留小數(shù)位數(shù)

122340.12345 保留兩位有效小數(shù) 122340.12 | substr(0, .+3)

  1. console.log(str.substr(0,str.indexOf(".")+3));
    通過 indexOf返回小數(shù)點的位置,再截取字符(要轉(zhuǎn)換為字符串,數(shù)字不能進(jìn)行比較)
  2. var PI = 123.123456 ;console.log(parseInt(PI*100) /100);
    先乘以100取整,再除以100 (如果是三位就變成1000)
  3. console.log(PI.toFixed(2));
    保留 2位 小數(shù)
  • 得到上傳文件格式小實例
   <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:先獲取當(dāng)前文件的路徑,通過路徑索引substr方法和文件后綴!
}
   </script>
  • 大小寫轉(zhuǎn)換
  1. toUpperCase,轉(zhuǎn)換為大寫(參數(shù): 無)
  2. toLowerCase,轉(zhuǎn)換為小寫(參數(shù):無)
    asdf.toUpperCase() 結(jié)果就是: ASDF
    $("txt").value.toUpperCase();
    substr(path.lastIndexOf(".")).toUpperCase();

五、無縫滾動

思路:一開始顯示兩張圖,那么就先滾動所有圖之后再加上開始兩張圖在最后,滾動結(jié)束left的值回到開始,但是前面的滾動結(jié)束也是顯示前兩張。

           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已經(jīng)被清了,
          如果不用timer = ,沒名字再放上鼠標(biāo)還是清不掉
           }

六、勻速運(yùn)動

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)
           } 

七、緩動動畫

  • 等差數(shù)列
    一個盒子初始值是0,要走到 400px的位置
    leader 0 target 400
    box.style.left = xxxx + “px”
    leader = leader + (target - leader ) /10 ;可以實現(xiàn)減速效果

八、焦點圖和左右輪播圖(需要緩動動畫)

鼠標(biāo)滑過序號出現(xiàn)圖片的輪播圖:
獲取每個圓點的索引值,鼠標(biāo)滑過類名變?yōu)楫?dāng)前(修改圓點樣式),target值變成當(dāng)前索引值*寬度。

        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);

左右輪播圖,左右箭頭,鼠標(biāo)滑過顯示,滑出隱藏。
點擊left向左移動一個寬度,<=0時設(shè)置=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);  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 根據(jù)字符返回位置 跟 charAt() 相反的 根據(jù) 字符 返回的是 位置 1 /返回前面起第一個字符...
    越IT閱讀 624評論 1 3
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,270評論 0 4
  • 變量命名、聲明、賦值 1.必須以字母、下劃線或美元符號開頭,后面可以跟字母、下劃線、美元符號和數(shù)字。2.變量名區(qū)分...
    wq04200閱讀 646評論 0 1
  • 那時我有一群說走就走的人兒,可是我發(fā)現(xiàn)我少了一輛車,,, 當(dāng)我有了那輛車時,我才明白我已經(jīng)沒了那群人...
    b826c5e4fc8c閱讀 98評論 0 1
  • 目錄 上一篇 一個初三學(xué)生面臨的最大壓力,看上去似乎是中考,事實上這并不是所有人都要走的路。因為義務(wù)教育就到初三結(jié)...
    劉白月閱讀 431評論 0 1