10個js小案例

知識梳理:javascript

1.DOM(document object model)文檔對象模型:html(標籤對象集合)html

標籤名獲取對象:document.getElementsByTagName('標籤名');//返回的是一個數組前端

類名獲取對象:document.getElementsClassName('類名’);//返回的是一個數組java

id獲取(id惟一):document.getElementById();
jquery

獲取內容標籤:innerText,innerHTMLes6

區別:innerHTML能夠把標籤寫進htmlweb

基本操做:ajax

建立標籤:var h1=document.createElement('h1');正則表達式

給標籤追加標籤:var div=document.getElementsByTagName('div')[0]  //獲取第一個div後端

div.appendChild(h1);  //這樣就把h1標籤添加到了div中

類名操做:

對象.className='類名';

標籤已經有類名的狀況下:

標籤對象.classList.remove('移除的類名');

標籤對象.classList.add('追加的類名');

標籤對象.classList.contains('是否包含的類名');   //判斷:返回true或者false

標籤對象屬性操做:

標籤對象.setAttribute('屬性名','屬性值');        //設置屬性

標籤對象.setAttribute('屬性名');                     //獲取屬性

查找子節點:

firstElementChild;               //第一個子節點

lastElementChild;                  //最後一個子節點

children;                   //返回的是數組

查找父節點:parentNode;              //父節點

查找兄弟節點:

previousElementSibling            //查找上一個兄弟

nextElementSibling              //查找下一個兄弟

 

 

2.BOM(Browser objece model)

window(打印,打開窗口,關閉窗口等)

location(跳轉頁面和截取瀏覽器地址信息等)

history(歷史,回退和前進等)

如:go(n)和back()

n表示前進到第幾張網頁,設爲-1表示back()

navigator(能夠看瀏覽器的信息)

如:navigator.userAgent(能夠獲取到瀏覽器的一些基本信息)

screen(屏幕)

screen.height、screen.width(屏幕寬高 能夠單電腦的分辨率)

clientWidth(標籤對象的寬度:width+padding)

offsetWidth(標籤對象的寬度:width+padding+border)

scorllWidth(標籤對象的寬度,內容若是超出了盒子也算:width+padding)

document.documentElement.clientHeight;(可視區域的高)

document.documentElement.clientWidth;(可視區域的寬)

3.JOM(javascript object model)

內置對象

Math:sqrt()-->(開平方)、abs()-->(絕對值)、random()-->(隨機數)、PI-->(π)、floor(n)-->(向下取整)、ceil(n)-->(向上取整)

Array(數組)

String(字符串)

1) length

2) substr(下標,下標)-->(截取字符:包左不包右) 

3) charAt(n)-->(提取:第n個)

4)indexOf('值')-->(查找值的下標)

4.Date(日期)

建立對象 new Date();

獲取:

1) getYear()    -->es3之前的單位,1999以後返回四位數字,可加上1900,數值能夠準確

2) getFullYear()        -->獲取的是當前的年份

3) getMonth()           -->月(0-11)

4) getDay()               -->星期(1-7)

5) getDate()              -->天數(1-31)

6) getHours()            -->時(0-23)

7) getMinutes()         -->分(0-59)

8) getseconds()        -->秒(0-59)

9) getTime()              -->(1970到如今的毫秒值)

注意:獲取時分秒後面都有一個s

5.定時器

定時器:setTimeout(操做,毫秒數);-->只執行一次

間隔定時器:setInterval(操做,毫秒數);-->間隔執行

6.事件(event)

鼠標:

onmousedown(鼠標按鈕被按下)     onmousemove(鼠標被移動)   onmouseout(鼠標從某元素移開)    onmouseover(鼠標移到某元素上)

鍵盤:

onkeydown(某個鍵盤按鍵被按下)   onkeypress(某個鍵盤按鍵被按下並鬆開)    onkeyup(某個鍵盤按鍵被鬆開)

其餘事件:

onclick(單擊)    ondelclick(雙擊)

注意:事件的全部單詞被當作一個單詞處理,因此不遵循駝峯規範

7.閉包:

由於var的變量提高特性,在for循環中獲取到的值永遠是最大值。在es6中,let解決了這個問題

8:ajax:

js的基本寫法,5個基本步驟

9.變量的7種基本類型

number(數字)、string(字符串)、boolean(布爾)、undefined(未定義)、null(空)、array(數組)、object(對象)

其中對象是一種特殊的類型

1.換圖片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>電燈開關</title>

</head>
<body>

<img id="light" src="img/off.gif">

<script>
    i=0;
    imgid = document.getElementById("light");
    imgid.onclick=function(){
        if(i%2==0){
            imgid.src="img/on.gif";    //換圖
        }else{
            imgid.src="img/off.gif"; //點擊換回來
        }
        i++;
    }
</script>
</body>
</html>

 

 2.觸碰行變色

<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <style>
        *{
            font-family: 微軟雅黑;
    }
        .h{
            background-color: #ccc;
        }
        .h:hover,h2:hover{
            background-color: #999;
        }
    </style>
</head>
<body>
    <script type="text/javascript">
        for(i=1;i<8;i++){
            if(i%2==0){
            document.write("<h2 class='h'>"+i+"</h2><br>");
        }
            else{
                document.write('<h2>'+i+'</h2><br>');
            }
        }
    </script>

</body>
</html>

 

3.多選,反選,全選

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <!-- <style>
    *{
        font-family: 微軟雅黑;
        margin: 0px;
        padding: 0px;
    }
    </style> -->
</head>
<body>
    <form action="javascript:">
        <p>選擇愛好:</p>
        <p><label><input type="checkbox" name="">登山</label></p>
        <p><label><input type="checkbox" name="">登山</label></p>
        <p><label><input type="checkbox" name="">登山</label></p>
        <p><label><input type="checkbox" name="">登山</label></p>
        <p><label><input type="checkbox" name="">登山</label></p>
        <p><label><input type="checkbox" name="">登山</label></p>
        <p><label><input type="checkbox" name="">登山</label></p>
        <p><label><input type="checkbox" name="">登山</label></p>
        <p>
            <button id='all'>全選</button>
            <button id='noall'>全不選</button>
            <button id='unall'>反選</button>
        </p>
    </form>
</body>
<script>
    all=document.getElementById('all');
    noall=document.getElementById('noall');
    unall=document.getElementById('unall');
    objs=document.getElementsByTagName('input');
    //全選
    all.onclick=function(){
    for(i=0;i<objs.length;i++){
            objs[i].checked=true;
        }
    }
    //全不選
    noall.onclick=function(){
    for(i=0;i<objs.length;i++){
            objs[i].checked=false;
        }
    }
    //反選
    unall.onclick=function(){
    for(i=0;i<objs.length;i++){
        // if(objs[i].checked){
        //     objs[i].checked=false;
        // }else{
        //     objs[i].checked=true;
        // }
        
        //三元運算符改進
        //objs[i].checked=objs[i].checked?false:true;
        //一元運算符
        objs[i].checked=!objs[i].checked;
    }
}
</script>
</html>

 

4.秒錶

<!DOCTYPE html>

<html lang="zn">

<head>

  <meta charset="UTF-8">

  <title>秒錶</title>

  <style>
        .contain{
            width: 200px;
            height: 50px;
            background: #000;
            border-radius: 20px;
            font-weight: bold;
            color: #0f0;
            text-align: center;
            font-size: 30px;
            line-height: 50px;
        }
  </style>
</head>
<body>
<div class="contain">
    <span id="Interval">10:38:00</span>
</div>&nbsp;&nbsp;<button id='pause'>暫停</button>&nbsp;&nbsp;
<button id='action'>開始</button>

  <script>

    //獲取日期對象
    function getDate(){

      dobj=new Date();
      hour = dobj.getHours();  //
      minute=dobj.getMinutes();  //
      second = dobj.getSeconds();//
      str=hour+":"+minute+":"+second;
      dsq=document.getElementById("Interval");//獲取id Interval
      dsq.innerHTML=str;
  }

    //未點擊按鈕前,先執行一次
    getDate();
    start();

    //開始函數

    function start(){

      sobj=setInterval(getDate,1000);  //設置定時器,一秒鐘執行一次getDate()
    }

    //中止函數

    function stop(){  

      clearInterval(sobj);  //清除定時器
    }

    //關閉按鈕
    c = document.getElementById("pause");
    c.onclick=function(){

      stop();
    }
    //開始按鈕
    action = document.getElementById("action");
    action.onclick=function(){

      start();
    }
  </script>
</body>

</html>

5.表單事件和鼠標事件

 

<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <title>表單事件和鼠標、鍵盤事件</title>
    <style>
        .txt{
            border-style: 2px solid;

        }
    </style>
</head>
<body>
    <form action="http://www.baidu.com" method="get" id='fid'>
        <p>用戶名</p>
        <input class="txt" type="text" name="name" placeholder="請輸入用戶名" id="input" value="java">
        <input class="txt" type="text" name="name" value="javascript" id="input2">
        <input class="txt" type="text" id='input3'>
        <input class="txt" type="text" id='input4'>
        <!-- 下拉菜單 -->
        <select id='s1'>
            <option placeholder="選擇城市">選擇城市</option>
            <option value="北京">北京</option>
            <option value="太原">太原</option>
            <option value="南京">南京</option>
            <option value="南寧">南寧</option>
            <option value="天津">天津</option>
        </select><br>
        <h3>請確認你選擇的城市:<span id="s2"> </span></h3>

        <input type="submit" value="提交">&nbsp;&nbsp;<input type="reset" value="重置">
    </form>
    <script type="text/javascript">
        inobj=document.getElementById('input');
        inobj.onfocus=function(){
            this.style.outlineColor="#f00";
        }
        /*inobj.onblur=function(){
            val=this.value;
            if(val.length<6){
                alert("用戶名至少6位");
            }
        }*/
        //當值改變的時候
        inobj.onchange=function(){
            alert("不要改變個人元素");
        }
        //當表單元素被選中的時候
        inobj.onselect=function(){
            alert('我已被選中');
        }
        //當表單提交的時候
        fidobj=document.getElementById('fid');
        fidobj.onsubmit=function(){
            r = confirm('您要提交表單嗎?');
            if(!r){
                return false;
            }
        }
        //當表單重置的時候
        fidobj.onreset=function(){
            r = confirm('你要重置嗎?');
            if(!r){
                return false;
            }
        }

        //onchange應用下拉菜單
        s1obj=document.getElementById('s1');
        s2obj=document.getElementById('s2');
        s1obj.onchange=function(){
            s1val=this.value;
            s2obj.innerHTML=s1val;
        }
        //得到表單焦點,全選中表單元素
        inobj2=document.getElementById('input2');
        inobj2.onfocus=function(){
            this.select();//全選
        }

        //鼠標事件
        //鼠標移入
        inobj.onmouseenter=function(){
            this.value="I love javascript";
        }
        //鼠標移出
        inobj.onmouseleave=function(){
            this.value="I love java";
        }

        inobj3=document.getElementById('input3');
        //鼠標一移動
        inobj3.onmousemove=function(){
            this.style.outlineColor="#f00";
            this.value="javascript";
        }

        //鍵盤事件
        inobj4=document.getElementById('input4');
        //鍵盤按下時
        /*inobj4.onkeydown=function(){
            alert('你按下就會觸發我');
        }*/
        //鍵盤彈起時
        /*inobj4.onkeyup=function(){
            //alert('你彈起鍵盤就會觸發我');
            val = this.value.toUpperCase();//轉成大寫
            this.value=val;
        }*/
        //鍵盤按下並釋放一個鍵
        inobj4.onkeypress=function(){
            alert('按住我不放,我會一直彈出的喔');
        }
    </script>
</body>
</html>

 

6.回到頂部案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>回到頂部案例</title>
    <style>
        .fooer{
            position: fixed;
            bottom: 0px;
            right:0px;
            margin-bottom: 15px;
            margin-right: 15px;
            

        }
        img{
            width: 120px;
            height: 130px;
            cursor: pointer;
        }
    </style>
</head>
<body>

    <div class="fooer">
    <!-- <a href="#abc"> -->
    <img src="img/arrive.png" alt="回到頂部" id="ar" />
    </a>
    </div>
    <!-- 用錨點方法 -->
    <!-- <a name="abc"></a> -->
    <!-- sublime快速生成 h1{$$$$$$$$$}*100 再按tab鍵-->
    <h1>0000000000000001</h1>
    <h1>0000000000000002</h1>
    <h1>0000000000000003</h1>
    <h1>0000000000000004</h1>
    <h1>0000000000000005</h1>
    <h1>0000000000000006</h1>
    <h1>0000000000000007</h1>
    <h1>0000000000000008</h1>
    <h1>0000000000000009</h1>
    <h1>0000000000000010</h1>
    <h1>0000000000000011</h1>
    <h1>0000000000000012</h1>
    <h1>0000000000000013</h1>
    <h1>0000000000000014</h1>
    <h1>0000000000000015</h1>
    <h1>0000000000000016</h1>
    <h1>0000000000000017</h1>
    <h1>0000000000000018</h1>
    <h1>0000000000000019</h1>
    <h1>0000000000000020</h1>
    <h1>0000000000000021</h1>
    <h1>0000000000000022</h1>
    <h1>0000000000000023</h1>
    <h1>0000000000000024</h1>
    <h1>0000000000000025</h1>
    <h1>0000000000000026</h1>
    <h1>0000000000000027</h1>
    <h1>0000000000000028</h1>
    <h1>0000000000000029</h1>
    <h1>0000000000000030</h1>
    <h1>0000000000000031</h1>
    <h1>0000000000000032</h1>
    <h1>0000000000000033</h1>
    <h1>0000000000000034</h1>
    <h1>0000000000000035</h1>
    <h1>0000000000000036</h1>
    <h1>0000000000000037</h1>
    <h1>0000000000000038</h1>
    <h1>0000000000000039</h1>
    <h1>0000000000000040</h1>
    <h1>0000000000000041</h1>
    <h1>0000000000000042</h1>
    <h1>0000000000000043</h1>
    <h1>0000000000000044</h1>
    <h1>0000000000000045</h1>
    <h1>0000000000000046</h1>
    <h1>0000000000000047</h1>
    <h1>0000000000000048</h1>
    <h1>0000000000000049</h1>
    <h1>0000000000000050</h1>
    <h1>0000000000000051</h1>
    <h1>0000000000000052</h1>
    <h1>0000000000000053</h1>
    <h1>0000000000000054</h1>
    <h1>0000000000000055</h1>
    <h1>0000000000000056</h1>
    <h1>0000000000000057</h1>
    <h1>0000000000000058</h1>
    <h1>0000000000000059</h1>
    <h1>0000000000000060</h1>
    <h1>0000000000000061</h1>
    <h1>0000000000000062</h1>
    <h1>0000000000000063</h1>
    <h1>0000000000000064</h1>
    <h1>0000000000000065</h1>
    <h1>0000000000000066</h1>
    <h1>0000000000000067</h1>
    <h1>0000000000000068</h1>
    <h1>0000000000000069</h1>
    <h1>0000000000000070</h1>
    <h1>0000000000000071</h1>
    <h1>0000000000000072</h1>
    <h1>0000000000000073</h1>
    <h1>0000000000000074</h1>
    <h1>0000000000000075</h1>
    <h1>0000000000000076</h1>
    <h1>0000000000000077</h1>
    <h1>0000000000000078</h1>
    <h1>0000000000000079</h1>
    <h1>0000000000000080</h1>
    <h1>0000000000000081</h1>
    <h1>0000000000000082</h1>
    <h1>0000000000000083</h1>
    <h1>0000000000000084</h1>
    <h1>0000000000000085</h1>
    <h1>0000000000000086</h1>
    <h1>0000000000000087</h1>
    <h1>0000000000000088</h1>
    <h1>0000000000000089</h1>
    <h1>0000000000000090</h1>
    <h1>0000000000000091</h1>
    <h1>0000000000000092</h1>
    <h1>0000000000000093</h1>
    <h1>0000000000000094</h1>
    <h1>0000000000000095</h1>
    <h1>0000000000000096</h1>
    <h1>0000000000000097</h1>
    <h1>0000000000000098</h1>
    <h1>0000000000000099</h1>
    <h1>0000000000000100</h1>
</body>
    <script>
        //用js方法
        window.onscroll=function(){
            st=document.documentElement.scrollTop;//獲取滾動的高
            document.title=st;
            arobj=document.getElementById('ar');
            arobj.onclick=function(){
                document.documentElement.scrollTop=0;//設置爲0,回到頂部
            }
        }
        
    </script>
</html>

 

 7.正則表達式

  1)匹配電話號碼

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>正則匹配電話號碼</title>
</head>
<body>
    <h1>正則匹配電話號碼</h1>
</body>
<script>
    phone='13876457345';
    if(phone.match(/^138+(\d{8})+$/g)){
        alert('電話匹配成功');
    }else{
        alert('匹配失敗');
    }
</script>
</html>

 

  2)匹配郵箱

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>正則郵箱格式</title>
</head>
<body>
    <h1>正則匹配郵箱</h1>
</body>
<script type="text/javascript">
    email='1363f@qq.com'
    if(email.match(/^\w+@\w+\.\w+$/i)){
        alert('郵箱格式正確');
    }else{
        alert('郵箱格式有誤');
    }
</script>
</html>

 

  3)替換

  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>替換</title>
</head>
<body>
    <h1>替換</h1>
    <script>
        //有'2019/7/15'換成2019-7-15
        date='2019/7/15';
        time=date.replace(/(\d+)\/+(\d+)\/+(\d)/g,"$1-$2-$3");
        alert(time);
        </script>

</body>
</html>

8.閉包

閉包的定義:在一個函數的內部有一個返回的函數,內部的函數使用外部函數的變量,經過returnf返回,內部函數被拋到外部,致使這個變量沒有被釋放回收。(至關於全局變量)。

首先函數有三種基本調用的方式:

第一種:基本調用(函數名加括號調用)

第二種:變量調用

如:var fun=function methedName(){};

fun();

第三種:強制調用

把一個函數用括號包裹起來,再寫一對括號強制調用一次

如:(function fun(){

     alert(1);

   })();

匿名函數調用也是這用調法

如(

function(){

  alert(1);

}

)();

特殊:有時能夠省略這種包裹的括號,好比在定時器內,點擊事件內,就不用包裹的括號,

注意:一個函數return(返回)什麼,該函數就表明什麼

如:function fun(){

  return {};

}

var funobj=fun();

實際上變量funobj={};

那麼,返回的既然是一個對象,就能夠按照對象的使用方法,用變量funobj去操做對象。

 

再好比:function fun(){

    return function(){

    alert(1);

  }

}

var funMe=fun();

分析:fun()返回的是一個函數,funMe();就這樣調用便可

若是沒有變量funMe;要想使用內部的匿名函數,fun()();這樣調用便可

閉包切換圖片的簡單應用

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            #box>span{
                display: inline-block;
                width: 100px;
                background: #faa;
                height: 50px;
                color:#fff;
                font-size:24px;
                text-align: center;
                line-height: 50px;
            }
            #box>span:hover{
                background: orange;
            }
            img{
                display: none;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <span>圖1</span>
            <span>圖2</span>
            <span>圖3</span>
        </div>
        <img src="路徑" alt="圖1" >
        <img src="路徑" alt="圖2" >
        <img src="路徑" alt="圖3" >
        <script type="text/javascript">
            window.onload=function(){
                //獲取box的子
                var boxs=document.getElementById('box').children;
                for(var i=0;i<boxs.length;i++){
                    boxs[i].onclick=function(){
                        var k=i;
                        return function(){
                            var imgobj=document.getElementsByTagName('img');
                            //把全部的圖片隱藏
                            for(var j=0;j<imgobj.length;j++){
                                imgobj[j].style.display='none';
                            }
                            //顯示當前點擊的圖片
                            imgobj[k].style.display='block';
                        };    
                    }();
                }
            }
        </script>
    </body>
</html>

 

9.控制圖片走動

經過event.clientX和event.clientY來獲取鼠標移動的座標

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>移動圖片</title>
    <style>
        img{
            position: absolute;
            top:0px;
            left: 0px;
        }
    </style>
</head>
<body>

<img id="light" src="img/69.png">

<script>
    imgobj=document.getElementById('light');
    //鼠標移動改變標題
    //document.onmousemove=function(){
    //    document.title='你還好嗎';
    //}
    //移動鼠標顯示像素
    //document.onmousemove=function(event){
    //    x=event.clientX;
    //    y=event.clientY;
    //    document.title=x+"-"+y;
    //}
    //移動圖片
    document.onmousemove=function(event){
        x=event.clientX;
        y=event.clientY;
        imgobj.style.top=x+"px";
        imgobj.style.left=y+"px";
    }
    
</script>
</body>
</html>

 10.ajax

ajax是處理前端和後端數據的通信,是一種無須加載完整個頁面實現網頁部分刷新的技術,同時和定時器、框架、同樣也是實現異步的一種方式。在客戶端請求ajax時,ajax處理數據有可能會失敗,因此有一種失敗的狀態,在jquery框架中ajax更加的清晰。

js中寫ajax的步驟

1.聲明一個xhr對象

2.打開發射器open

3.聲明請求頭

4.發射(發射器發射)

5.處理狀態(等待ajax處理)

 

模擬請求百度的ajax,具體代碼實現

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <div id="box">
            
        </div>
        <script type="text/javascript">
            var box = document.getElementById('box');
            // 1.聲明
            var xhr=new XMLHttpRequest();
            // 2.發射器(參數1:發送數據的方式,參數2:接口地址,參數3:false(同步),true(異步))
            xhr.open('get','http://wwww.baidu.com',true);
            // 3.設置請求頭類型
            //xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            // 4.發送數據
            xhr.send();
            // 5.狀態
            box.innerHTML='加載中...'
            xhr.onreadystatechange=function(){
                setInterval(function(){
                if(xhr.status==200&&xhr.readyState==4){
                    //(readyState)五種準備狀態 0:未發送 1:已發送 2:已收到 3:正在處理 4:處理完畢
                    //(status)三種結果狀態 200:成功 0:失敗 404:服務器未找到
                    box.innerHTML='加載完畢'
                }    
                },1000);
            }
            
        </script>
    </body>
</html>

經過請求百度的接口,模擬請求的時間,若是瀏覽器(谷歌)出現了:No 'Access-Control-Allow-Origin'這種錯誤,說明瀏覽器須要降級

點擊瀏覽器鼠標右鍵屬性:在地址的最後面空格再添加--disable-web-security --user-data-dir=c:\ 

c表示瀏覽器所在的盤符

 

 

                                                                     2019-08-24 21:52:37

相關文章
相關標籤/搜索