1. 程式人生 > >Python學習 Day 047 - BOM & jQUery

Python學習 Day 047 - BOM & jQUery

主要內容:

  • 1.BOM
  • 2.jQuery
  • 3.jQuery的選擇器(獲取DOM)
  • 4.jQuery的動畫介紹

1.BOM

1.1BOM介紹

JavaScript基礎分為三個部分:

  • ECMAScript:JavaScript的語法標準。包括變數、表示式、運算子、函式、if語句、for語句等。

  • DOM:文件物件模型,操作網頁上的元素的API。比如讓盒子移動、變色、輪播圖等。

  • BOM:瀏覽器物件模型,操作瀏覽器部分功能的API。比如讓瀏覽器自動滾動。

(1)什麼是BOM

BOM:Browser Object Model,瀏覽器物件模型。

BOM的結構圖:

      

從上圖也可以看出:

  • window物件是BOM的頂層(核心)物件,所有物件都是通過它延伸出來的,也可以稱為window的子物件。

  • DOM是BOM的一部分。

window物件:

  • window物件是JavaScript中的頂級物件

  • 全域性變數、自定義函式也是window物件的屬性和方法。

  • window物件下的屬性和方法呼叫時,可以省略window。

1.2 BOM 的常見內建方法和內建物件

(1) 彈出系統對話方塊

alert();    //
不同瀏覽器中的外觀是不一樣的 confirm(); //相容不好 prompt(); //不推薦使用

(2)開啟視窗,關閉視窗

//開啟視窗
window.open(url,target)
//url:要開啟的地址,   target :新視窗的位置。可以是:_blank 、_self、 _parent 父框架

(3)程式碼示例

    <title>Title</title>
</head>
<body>
        <button onclick="window.open('https://www.luffycity.com/')">路飛學城</button>
        <button>開啟百度</button>
        <button onclick="window.close()">關閉</button>
        <button>關閉</button>

</body>
<script type="text/javascript">
    var
oBtn = document.getElementsByTagName("button")[1]; var closeBtn = document.getElementsByTagName("button")[3]; oBtn.onclick = function(){ //在當前頁中開啟 // open("https://www.baidu.com","_self"); //開啟空白頁面 open('about:blank',"_self") }; closeBtn.onclick = function(){ if (confirm("是否關閉?")){ close() } } </script>

1.3 location物件

(1)location物件的屬性

  • href:跳轉

  • hash 返回url中#後面的內容,包含#

  • host 主機名,包括埠

  • hostname 主機名

  • pathname url中的路徑部分

  • protocol 協議 一般是http、https

  • search 查詢字串

 

location.herf  屬性舉例

</head>
<div> asdlfaf</div>
<body>
<script>
    var div = document.getElementsByTagName("div")[0];
    div.onclick = function (){
        //點選div時,跳轉到指定連結 當前網頁開啟網址
        location.href =  "http://www.baidu.com"
        //  window.open("http://www.baidu.com","_blank");  //方式二
    }
</script>
</body>

5秒後自動跳轉到百度

有時候,當我們訪問一個不存在的網頁時,會提示5秒後自動跳轉到指定頁面,此時就可以用到location。舉例:

<script>

    setTimeout(function () {
        location.href = "http://www.baidu.com";
    }, 5000);
</script>

(2)location 物件方法

location.reload(): 重新載入

<script>
    console.log(2222);
    // console.log(window.location);
    setInterval(function(){
        //頁面全域性重新整理 不建議 使用 可以用它除錯
        //更希望的是 區域性重新整理(ajax技術 與後端互動的核心技術)
        location.reload();
    },2000)
</script>

window.navigator 的一些屬性可以獲取客戶端的一些資訊。

  • userAgent:系統,瀏覽器)

  • platform:瀏覽器支援的系統,win/mac/linux

 例子:

    console.log(navigator.userAgent);
    console.log(navigator.platform);

(4)history物件

1、後退:

  • history.back()

  • history.go(-1):0是重新整理

2、前進:

  • history.forward()

  • history.go(1)

用的不多。因為瀏覽器中已經自帶了這些功能的按鈕:

1.4  client  offset  scroll 系列

(1)client系列

2.jQuery

(1) jQuery的介紹

jQuery是一個快速,小巧,功能豐富的JavaScript庫。它通過易於使用的API在大量瀏覽器中執行,使得HTML文件遍歷和操作,
事件處理動畫和Ajax更加簡單。通過多功能性和可擴充套件性的結合,
jQuery改變了數百萬人編寫JavaScript的方式。 jquery 中
98%的都是方法 只有兩個屬性: 索引 length

(2) 為什麼要使用jquery?

JavaScript書寫程式碼的不足

  • window.onload 事件有事件覆蓋的問題,因此只能寫一個事件。

  • 程式碼容錯性差。

  • 瀏覽器相容性問題。

  • 書寫很繁瑣,程式碼量多。

  • 程式碼很亂,各個頁面到處都是。

  • 動畫效果很難實現。

(3)jQuery的下載

(4) jQuery的使用

<div id = "box" class="box"></div>
<script type="text/javascript" src="./libs/jquery-3.3.1.js"></script>

<script>
    (function(a,b){
        alert(1)
    })(1,2);
    console.log($);
    console.log(jQuery)
</script>

(5)jQuery的入口函式

    <script>
                /*
        //window.onload有事件覆蓋
        window.onload = function () {
            alert(1)
        }
         window.onload = function () {
            alert(2)
        }
        */
    </script>
</head>
<body>
<script src="./libs/jquery-3.3.1.min.js"></script>
<script>
    // $(document).ready(function(){
    //     alert(1)
    // })
    // ;
    //  $(document).ready(function(){
    //     alert(2)
    // });

    // $(window).ready(function(){
    //     alert(2)
    // })
    
    $(function(){
        alert(1)
    })
</script>
</body>

小結:

//入口函式 文件載入完成之後 會呼叫
$(document).ready(function(){
})
//等待圖片載入完成之後 才執行
$(window).ready(function(){
})
//簡便寫法 文件載入完成之後 會呼叫
$(function(){
})

3.jQuery的選擇器(獲取DOM)

3.1 基礎選擇器

    <title>Title</title>
</head>
<body>
<div class = "box" id = "wrap">
    <p class="active">alex</p>
    <p class="active">alex</p>
    <p class="active">alex</p>
    <p class="active">alex</p>
    <p class="active">alex</p>
    <p class="active">alex</p>
    <p class="active">alex</p>
</div>
<script src="./libs/jquery-3.3.1.js"></script>
<script>
    $(function(){
        //jQuery的選擇器(獲取DOM物件 注意,它獲取的是jQuery物件而不是jsDOM物件)
        $("div")[0].style.backgroundColor = "red";
        console.log($("#wrap")); //id選擇器
        console.log($(".box"));  //類選擇器
        console.log($("#wrap .active"));  //後代選擇器
        // 獲取到jQuery物件,click時間
        $("#wrap .active").click(function(){
            // console.log(this.innerText); //錯誤寫法因為獲取到的是jQuery物件而不是結束DOM物件
            // //isdom =>jQuery物件
            // console.log($(this));

            console.log($(this).text()); //點選獲取jqery物件的text值
            $(this).text("haha");   //將獲取當前點選的jQuery值修改
            console.log($(this).text("haha"));
        })
})

</script>
</body>

小結:

- 標籤選擇器 $('div')
- id選擇器$('#box')
- class選擇器
- 後代
- 子代
- 組合
- 交集
- 兄弟 + ~

3.2基本過濾器

    <title>Title</title>
</head>
<body>
<ul>
    <li>天龍八部</li>
    <li>射鵰英雄傳</li>
    <li>神鵰俠侶</li>
    <li>倚天屠龍記</li>
</ul>
<input type="text">
<script src="./libs/jquery-3.3.1.js"></script>

<script>
    $(function(){
        //獲取值 ,eq()的使用
        console.log($("li:eq(1)").css("color"));
        //設定單個值或者多個值
        // $("li:eq(1)").css("color","red");

        //通過字典的形式給物件設定多個值
        $("li:eq(1)").css({
            "color":"red",
            "background-color":"blue"
        });
        //屬性選擇器
        $("input[type='text']").css({
            backgroundColor:"yellow"
        })
    })
</script>

 

小結:

- eq(index) index從0開始 選取匹配的元素
- gt(index) 大於index的元素
- lt(index) 小於index的元素
- odd 奇數
- even 偶數
- first 第一個
- last 最後一個

3.3 篩選選擇器

<ul>
    <li>天龍八部</li>
    <li class="item">
        <a href="">蕭峰</a>
    </li>
    <li>倚天屠龍記</li>
    <li>射鵰英雄傳</li>
</ul>

<script src="./libs/jquery-3.3.1.js"></script>
<script>
    $(function(){
        //查的是後代,
        console.log($("ul").find("a"));
        //查詢的是親兒子 如果指定親兒子,就在children('選擇器'),想獲取所有的親兒子 不用寫引數
        console.log($("ul").children());
        //查詢的是親爸
        console.log($("a").parent());
        //$(`li:eq(${index})`)
        console.log( $('ul li').eq());
    })
</script>

小結:

- find() 查詢的是後代
- children()查詢的是親兒子
- eq() 選擇匹配的元素
- siblings() 選取兄弟元素(除了自己本身)
- parent() 查詢的是親爹

siblings()方法的用途

    <title>Title</title>
    <style>
        div{
            display: none;
        }
        div.active{
            display: block;
        }
    </style>
</head>
<body>
    <button>按鈕1</button>
    <button>按鈕2</button>
    <button>按鈕3</button>
    <button>按鈕4</button>
    <button>按鈕5</button>
    <div class="active">
             1
    </div>
    <div>
        2
    </div>
    <div>
        3
    </div>
    <div>
        4
    </div>
    <div>
        5
    </div>
    <script src="./libs/jquery-3.3.1.js"></script>
    <script>
        $(function(){
            $("button").click(function(){
                console.log($(this).css("backgroundColor","red"));
                //獲取索引
                let i = $(this).index()
                //返回了jquery物件
                //鏈式程式設計
                $(this).css("backgroundColor","red").siblings("button").css("backgroundColor","#666");
                $("div").eq(i).addClass("active").siblings("div").removeClass("active");
            })
        })
    </script>

另外:升級版的選項卡

    <title>Title</title>
</head>
<body>
<ul>
    <li>
        <a href="javascript:void(0)">1</a>
    </li>
    <li>
        <a href="javascript:void(0)">1</a>
    </li>
    <li>
        <a href="javascript:void(0)">1</a>
    </li>
    <li>
        <a href="javascript:void(0)">1</a>
    </li>
</ul>
<script src ="./libs/jquery-3.3.1.js"></script>
<script>
    $(function(){
        $("ul li").click(function(){
            $(this).find("a").css("color","red").parent().siblings("li").find("a").css("color","blue");
        })
    })
</script>

4.jQuery的動畫介紹