【前端】js2

IT界小小小學生發表於2020-12-22


1.內建物件_陣列和日期

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
        * 1. 陣列物件
            1. 陣列在JS中是一個類,通過構造方法建立物件
            2. 陣列的四種方式
                1. new Array() 無參的構造方法,建立一個長度為0的陣列
                2. new Array(5) 有參的構造方法,指定陣列的長度
                3. new Array(2,4,10,6,41) 有參的構造方法,指定陣列中的每個元素
                4. [4,3,20,6] 使用中括號的方式建立陣列

            java陣列
                int[] array = new int[5]
                int[] array = {1,2,3}      array = new int[]{1,2,3}

            js的陣列特點:
                1. 陣列中的元素型別不需要一致
                2. 陣列可以自動擴容(只要新增元素就會擴容, 沒有越界異常, 沒有預設值)
        */
        var array = [0,1,"a"]
        array[4] = 4; //擴容
        document.writeln(array.length) //5
        document.writeln("<br>")
        for(var i=0; i < array.length; i++){
            document.writeln(array[i])  //0 1 a undefined 4
        }
    </script>
    
 <!--111111111111111111111111111111111111111111111111111111111111111111111-->
    <script>
        document.writeln("<hr>")
        /*
        * 2. 日期物件
            1. 作用:Date 物件用於處理日期和時間。
            2. 建立 Date 物件的語法: var myDate=new Date()
                1. Date 物件會自動把當前日期和時間儲存為其初始值。

            3. 日期物件的方法
                1. getFullYear() 從 Date 物件以四位數字返回年份。
                2. getMonth() 從 Date 物件返回月份 (0 ~ 11)。
                3. getDate() 從 Date 物件返回一個月中的某一天 (1 ~ 31)。
                4. getTime() 返回 1970 年 1 月 1 日(Unix)至今的毫秒數。類似於Java中的System.currentTimeMillis()
                5. toLocaleString() 根據本地時間格式,把 Date 物件轉換為字串。
        */
        var myDate = new Date()
        document.writeln(myDate) // 系統當前時間
        document.writeln("<br>")

        document.writeln(myDate.getMonth()) //10月列印出:9
        document.writeln("<br>")
        document.writeln(myDate.getTime()) //1970年到現在 時間毫秒值
        document.writeln("<br>")
        document.writeln(myDate.toLocaleString())
    </script>
</head>
<body>
</body>
</html>

在這裡插入圖片描述

2.內建物件_字串解析和url編碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
        * parseInt() : 從左開始讀取到第一個非數字的內容,停止解析, 返回整數
        * parseFloat () : 從左開始讀取到第一個非數字的內容,停止解析, 返回整數+小數
        *   isNaN : 如果是NaN(not a number),返回true
        */
         var str = "1230.01 px"
        // var n = parseInt(str)
        var n = parseFloat(str)
        document.writeln(n) //1230.01

        var a
        var b = 1
        var c = a + b
        document.writeln(isNaN(c)) //true
        document.writeln("<br>")
    </script>
    
<!--1111111111111111111111111111111111111111111111111111111111111111111-->
    <script>
        /*
        *   url(uri)編碼 : url遠端 < uri遠端和本地
        *       word=%E6%9D%AF%E5%AD%90
        *
        *     前端->伺服器(請求): 提交的資料 要經過 url編碼
        *       編碼: 字元 -> 位元組
        *           杯子 -> %E6%9D%AF%E5%AD%90 (瀏覽器渲染的url中還是杯子)
        *
        *     伺服器接收到 : url解碼
        *           %E6%9D%AF%E5%AD%90 -> 杯子
        *    encodeUri : 編碼
        *    decodeUri : 解碼
        */
        var word = '杯子'
        var result = encodeURI(word)
        document.writeln(result) //%E6%9D%AF%E5%AD%90
        var re = decodeURI(result)
        document.writeln(re) //杯子
    </script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function method01() {
            /*
            * 1. 獲取span的字型大小
            * 2. 字型大小 * 2
            * 3. 重新賦值給span標籤
            */
            var span = document.getElementById("myid");
            console.log(span.style.fontSize) // 20px
            var newSize = parseInt(span.style.fontSize) * 2
            span.style.fontSize = newSize + "px"
        }
    </script>
</head>
<body>
        <input type="button" value="字型放大兩倍" onclick="method01()">  <br><br>
        <span style="font-size: 20px" id="myid">字型</span>
</body>
</html>

在這裡插入圖片描述

3.Bom程式設計_window物件

在這裡插入圖片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
        * Bom : browser object model 瀏覽器物件模型
        *     1. window
        *     2. history
        *     3. location
        *
        *  window : 視窗 (執行環境)
        *    window物件在編寫時可以被省略!
        *   三種提示框
        *       1. alert(msg) : 警告框, 只有確認按鈕
        *       2. var result = confirm(msg)  : 確認框
        *           a. 確定 : 返回true
        *           b. 取消 : 返回false
        *       3. var result = prompt(msg,default)
        *           a. 確定: 返回輸入的內容
        *           b. 取消: 返回null
        *   兩種計時器
        *       1. 無限迴圈
        *           返回值 setInterval(method,time,param)
        *               每隔time ms 執行一次method(呼叫method,傳入的param)
        *               返回值: 就是當前設定的計時器
        *       2. 單次使用 setTimeout
        *       清除計時器
        *           clearInterval(計時器物件)
        *           clearTimeout
        */
        // window.alert("警方提示: 今晚會下雨~~")
        // alert("警方提示: 今晚會下雨2~~")

        // var result = confirm("你滿18週歲了嗎?");
        // document.writeln(result)

        // var content = prompt("安全問題: 你的女朋友是誰?","高圓圓");
        // document.writeln(content)
    </script>
    <script>
        var method01 = function (a) {
            // document.writeln(a)
            console.log(a) //如上是網頁輸出
        }
        var timer = setInterval(method01,1000,"呼")
        // setInterval("method01('嘻')",1000)
        
        // setTimeout(method01,3000,'呵呵')

        function method02() {
            clearInterval(timer)
        }
    </script>
</head>
<body>
        <input type="button" value="按鈕" onclick="method02()">
</body>
</html>

4.案例_會動的時鐘

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
           前端套路
        *   1. 先實現 頁面初始化效果 (主要: html + css)
        *   2. 哪些事件驅動什麼邏輯 (js)
        *
        *  實現: 時鐘
        *    1. 先實現 頁面初始化效果
        *       坑: 頁面剛重新整理的時候,設定系統當前時間
        *        1. 先獲取系統事件
        *        2. 然後設定到div標籤內
        *           notice: a. 頁面載入事件 b.innerText (開閉標籤之間的內容)
        *
        *    2. 哪些事件驅動什麼邏輯 (js)
        *       1. 開始按鈕被點選: 時間動起來
        *           方案A: 每隔1秒,時間+1 (時間進位制問題)
        *           方案B: 每隔1秒,獲取系統當前時間(不自己寫)
        *
        *       2. 暫停按鈕被點選: 時間不動了
        *           清除計時器
        *
        *   坑: 連續點選開始按鈕, 那麼就停不掉了!!!
        *       原因: 計時器在一個網頁中可以設定多個
        *          timer = 0x0001
        *          timer = 0x0002
        *       解決:
        *           1. 方案A: 點開始, 先清除timer
        *           2. 方案B:
        *                   當開始按鈕點選的時候,開始按鈕 禁用!
        *                   當暫停按鈕點選的時候,開始按鈕 啟用!
        */
    </script>
<!--111111111111111111111111111111111111111111111111111111111111111111-->    
    <script>
        window.onload = function (ev) {
           method01()
        }
        function method01() {
            var myDate = new Date();
            var time = myDate.toLocaleString();
            console.log(time)
            //尋找id=mydiv的標籤(事先載入好 : 頁面載入事件)
            var div = document.getElementById("mydiv");
            div.innerText = time
        }

        //注意: 命名函式不要寫在另外一個函式內部
        var timer;
        function start() {
            // clearInterval(timer)
            timer = setInterval(method01,1000)

            var startBtn = document.getElementById("start");
            startBtn.disabled = true //禁用
        }
        function pause() {
            clearInterval(timer)

            var startBtn = document.getElementById("start");
            startBtn.disabled = false //啟用
        }
    </script>
</head>
<body>
        <div id="mydiv" style="color: green;font-size: 30px">
            系統當前時間
        </div>
        <input type="button" value="開始" onclick="start()" id="start">
        <input type="button" value="暫停" onclick="pause()">
</body>
</html>

5.Bom程式設計_location物件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
        * location : 位址列
        *   1. 重要屬性 href (位址列中的內容,如果被修改,會自動跳轉)
        *   2. 方法 reload() : 重新載入
        */
        function method01() {
            location.href = "http://www.baidu.com"
        }
        function method02() {
            location.reload()
        }
    </script>
</head>
<body>
    <input type="button" value="跳轉到百度" onclick="method01()">  <br>
    <a href="http://www.baidu.com">超連結:跳轉</a>
    <hr>
    <input type="button" value="重新載入" onclick="method02()">

</body>
</html>

在這裡插入圖片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
        *   事件: 頁面載入
        *   邏輯: 倒數計時, 時間=0, 跳轉
        */
        var i = 5;
        function method01() {
            i--;

            var span = document.getElementById("myspan");
            span.innerText = i + "秒後回到主頁"

            if(i == 0){
                location.href = "http://www.baidu.com"
            }
        }
        window.onload = function (ev) {
            setInterval(method01,1000)
        }
    </script>
</head>
<body>
        付款成功!!! <br>
        <span id="myspan">5秒後回到主頁</span> <a href="http://www.baidu.com">如果沒有自動跳轉,請點選這個</a>
</body>
</html>

6.Bom程式設計_history物件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
        *  history: 歷史記錄
        *      A  ->跳轉 B (記錄: 上一步)
        *      B ->回退  A (記錄: 下一步)
        *   函式:
        *       forward()
        *       back()
        *       go(index)
        */
        function forward() {
            // history.forward()
            history.go(1)
        }
    </script>
</head>
<body>
        第一頁面 <br>
        <a href="06_history第二頁面.html">點選跳轉到二</a><br>
        <input type="button" value="前進" onclick="forward()">
</body>
</html>

在這裡插入圖片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function back() {
            // history.back()
            history.go(-1)
        }
    </script>
</head>
<body>
    第二頁面 <br>
    <input type="button" value="後退" onclick="back()">
</body>
</html>

相關文章