前端基本功--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閱讀 227,882評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內容

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