中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript WebAPI的概念是什么

發布時間:2022-05-13 14:07:05 來源:億速云 閱讀:216 作者:iii 欄目:web開發

這篇文章主要介紹了JavaScript WebAPI的概念是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇JavaScript WebAPI的概念是什么文章都會有所收獲,下面我們一起來看看吧。

JavaScript WebAPI的概念是什么

1. WebAPI 背景知識

1.1 什么是 WebAPI

JS 分成三個大的部分:

  • ECMAScript: 基礎語法部分

  • DOM API: 操作頁面結構

  • BOM API: 操作瀏覽器

WebAPI 就包含了 DOM + BOM.

1.2 DOM 基本概念

什么是 DOM

DOM 全稱為 Document Object Model.

W3C 標準給我們提供了一系列的函數, 讓我們可以操作:

  1. 網頁內容

  2. 網頁結構

  3. 網頁樣式

DOM 樹

一個頁面的結構是一個樹形結構, 稱為 DOM 樹.
JavaScript WebAPI的概念是什么

重要概念:

  • 文檔: 一個頁面就是一個 文檔, 使用 document 表示.

  • 元素: 頁面中所有的標簽都稱為 元素. 使用 element 表示.

  • 節點: 網頁中所有的內容都可以稱為 節點(標簽節點, 注釋節點, 文本節點, 屬性節點等). 使用 node表示.

2. 獲取元素

2.1 querySelector

使用 querySelector 能夠完全復用前面學過的 CSS 選擇器知識, 達到更快捷更精準的方式獲取到元素對象

語法格式:

let element = document.querySelector(selectirs);
  • selectors 填一個或者多個選擇器

使用示例:

    <p class="one"> abc </p>
    <p id="two"> def </p>
    <p><input type="text"></p>
    <script>
        let one = document.querySelector('.one');
        console.log(one);
        let two = document.querySelector('#two');
        console.log(two);
        let three = document.querySelector('input');
        console.log(three);
    </script>

運行截圖
JavaScript WebAPI的概念是什么

2.2 querySelectorAll

如果您需要與指定選擇器匹配的所有元素的列表,則應該使用 querySelectorAll()

使用示例:

    <p class="one">123</p>
    <p id="two">456</p>
    <script>
        let ps = document.querySelectorAll('p');
        console.log(ps);
    </script>

運行截圖
JavaScript WebAPI的概念是什么

3. 操作元素

3.1 獲取/修改元素內容

1. innerText

Element.innerText 屬性表示一個節點及其后代的“渲染”文本內容

注: 不識別 html 標簽. 是非標準的(IE發起的). 讀取結果不保留html源碼中的 換行和空格.

使用示例:

    <p class="one">hello world</p>
    <p class="two">hello world</p>
    <script>
        let p = document.querySelector('.two');
        console.log(p);
        p.innerText = '<span>world hello</span>';
    </script>

運行截圖:

通過 innerText 無法獲取p 內部的 html 結構, 只能得到文本內容.
JavaScript WebAPI的概念是什么

2. innerHTML

Element.innerHTML 屬性設置或獲取HTML語法表示的元素的后代
注意:

  • 識別 html 標簽. W3C 標準的. 讀取結果保留html源碼中的 換行 和 空格

代碼示例:

    <p class="one">hello world</p>
    <p class="two">hello world</p>
    <script>
        let p = document.querySelector('.two');
        console.log(p);
        p.innerHTML = '<span>world hello</span>';
    </script>

運行截圖:

innerHTML 不光能獲取到頁面的 html 結構, 同時也能修改結構. 并且獲取到的內容保留的空格和換行
JavaScript WebAPI的概念是什么

3.2 獲取/修改元素屬性

注: 通過 element.屬性來獲取屬性
代碼示例:

    <img src="male.png" title="男" alt="男">
    <script>
        let img = document.querySelector('img');
        img.onclick = function() {
            if(img.title.lastIndexOf("男") != -1){
                img.src = 'female.png';
                img.title = '女';
            }else{
                img.src = 'male.png';
                img.title = '男';
            }
        }
    </script>

運行結果:
JavaScript WebAPI的概念是什么

3.3 獲取/修改表單元素屬性

代碼示例1: 播放 暫停的轉換.

<input type="button" value="播放"><script>
    let input = document.querySelector('input');
    input.onclick = function() {
        if(input.value == '播放'){
            input.value = '暫停';
        }else{
            input.value = '播放';
        }
    }</script>

運行截圖:
JavaScript WebAPI的概念是什么

代碼示例2: 計數

    <input type="text" value="0" id="one">
    <input type="button" value="點擊+1" id="add">
    <script>
        let one = document.querySelector('#one');
        let add = document.querySelector('#add');
        add.onclick = function() {
            one.value++;
        }
    </script>

JavaScript WebAPI的概念是什么

代碼示例3: 全選/取消全選按鈕

    <h4>選擇你喜歡玩的游戲</h4>
    <input type="checkbox" class="game">王者榮耀<br/>
    <input type="checkbox" class="game">和平精英<br/>
    <input type="checkbox" class="game">開心消消樂<br/>
    <input type="checkbox" class="game">我的世界<br/>
    <input type="checkbox" class="all">全選    <script>
        let games = document.querySelectorAll('.game');
        let all = document.querySelector('.all');
        all.onclick = function(){
            for (let i = 0; i < games.length; i++) {
                games[i].checked = all.checked;
            }
        }
        for (let i = 0; i < games.length; i++) {
            games[i].onclick = function() {
                all.checked = allChecked();
            }
        }

        function allChecked() {
            for (let i = 0; i < games.length; i++) {
                if(!games[i].checked){
                    return false;
                }
            }
            return true;
        }
    </script>

運行截圖
JavaScript WebAPI的概念是什么

3.4 獲取/修改樣式屬性

CSS 中指定給元素的屬性, 都可以通過 JS 來修改

style 中的屬性都是使用 駝峰命名 的方式和 CSS 屬性對應的.
例如: font-size => fontSize, background-color => backgroundColor

1. 行內樣式操作

element.style.[屬性名] = [屬性值];element.style.cssText = [屬性名+屬性值];
代碼示例: 字體變大
    <p style="font-size: 20px;color:red">你好</p>
    <script>
        let p = document.querySelector('p');
        p.onclick = function() {
            let fontSize = parseInt(p.style.fontSize);
            fontSize += 10;
            p.style.fontSize = fontSize + "px";//注意有單位的要帶上單位
        }
    </script>

運行截圖:
JavaScript WebAPI的概念是什么

2. 類名樣式操作

element.className = [CSS 類名];
代碼示例: 背景顏色變化
    <style>
        html,body{
            height: 100%;
            width: 100%;
        }
        p {
            height: 100%;
            width: 100%;
        }
        .black{
            background-color:black;
            color: gray;
        }
        .gray {
            background-color: gray;
            color: black;
        }
    </style>
    <p class='black'>
        你好!
    </p>
    <script>
        let p = document.querySelector('p');
        p.onclick = function() {
            if(p.className.indexOf("black") != -1){
                p.className = 'gray';
            }else{
                p.className = 'black';
            }
        }
    </script>

運行截圖:
JavaScript WebAPI的概念是什么

4. 操作節點

4.1 新增節點

分為兩個步驟:

  1. 創建元素節點
    createElement 創建元素節點.
    createTextNode 創建文本節點
    createComment 創建注釋節點
    createAttribute 創建屬性節點

  2. 插入節點到 dom 樹中
    ① 使用 appendChild 將節點插入到指定節點的最后一個孩子之后
    ②使用insertBefore將節點插入到指定節點之前

代碼示例:

    <p class="test">

    </p>
    <script>
        let p = document.createElement('p');
        p.id = 'myp';
        p.className = 'one';
        p.innerHTML = 'hehe';

        let test = document.querySelector('.test');
        test.appendChild(p);
    </script>

運行截圖:
JavaScript WebAPI的概念是什么

代碼示例: 當一個節點插入兩次,相當于移動.

    <p class="parent">
        <p>1</p>
        <p>2</p>
        <p>3</p>
        <p>4</p>
    </p>

    <script>
        let child = document.createElement('p');
        child.innerHTML = '100';

        let parent = document.querySelector('.parent');
        // 本來有四個元素,0號元素沒有,就插入一個元素
        parent.insertBefore(child,parent.children[0]);
        // 插入到2號元素前,1號元素是1不是child,2號元素是2.
        parent.insertBefore(child,parent.children[2]);
    </script>

運行結果:
JavaScript WebAPI的概念是什么

4.2 刪除節點

使用 removeChild 刪除子節點

oldChild = element.removeChild(child);

注: 如果 child 不是 element 的子節點,會拋異常

代碼示例:

    <p class="parent">
        <p class="child">1</p>
        <p class="child">2</p>
        <p class="child">3</p>
    </p>
    <script>
        let parent = document.querySelector('.parent');
        let childs = document.querySelectorAll('.child');
        parent.removeChild(childs[1]);
    </script>

運行結果:
JavaScript WebAPI的概念是什么

5. 實現幾個案例

5.1 猜數字

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>猜數字</title></head><body>
    <p class="parent">
        <p><input type="button" value="重新開始一局新游戲" class="again"></p>
        <p>
            請輸入要猜的數字: <input type="text" class="guessNum"> <input type="button" value="猜" class="press">
        </p>
        <p>
            已經猜的次數: <span class="count">0</span>
        </p>
        <p>
            結果: <span class="result"></span>
        </p>
    </p>
    <script>
        let guessNum = document.querySelector('.guessNum');
        let press = document.querySelector('.press');
        let count = document.querySelector('.count');
        let result = document.querySelector('.result');

        let countCount = 0;
        let guessResult = Math.floor(Math.random()*100)+1;
        press.onclick = function(){
            countCount++;
            count.innerHTML = countCount;
            guessNumber = parseInt(guessNum.value);
            if(guessNumber == guessResult){
                result.innerHTML = '猜對了';
                result.style = 'color : red';
            }else if(guessNumber < guessResult){
                result.innerHTML = '猜小了';
                result.style = 'color : blue';
            }else{
                result.innerHTML = '猜大了';
                result.style = 'color : orange';
            }
        }

        let again = document.querySelector('.again');
        again.onclick = function() {
            guessResult = Math.floor(Math.random()*100)+1;
            countCount = 0;
            count.innerHTML = 0;
            guessNum.value = '';
            result.innerHTML ='';
        }
    </script></body></html>

運行截圖:
JavaScript WebAPI的概念是什么

5.2 表白墻

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表白墻</title></head><body>
    <p class="parent">
        <p id="wall">表白墻</p>
        <p id="remind">輸入后點擊提交,會將信息顯示在表格中</p>
        <p class="one"><span class="two">誰:</span><input type="text" class="text"></p>
        <p class="one"><span class="two">對誰:</span><input type="text" class="text"></p>
        <p class="one"><span class="two">說什么:</span><input type="text" class="text"></p>
        <p class="one"><input type="button" value="提 交" class="press"></p>
    </p>
    
    <style>
        /* 去除瀏覽器默認樣式 */
        * {
            margin: 0;
            padding: 0;
        }
        /* 設置總寬度 */
        .parent {
            width: 400px;
            margin: 0 auto;
        }
        /* 涉資表白墻樣式 */
        #wall {
            font-size: 30px;
            font-weight: 700;
            text-align: center;
            margin: 5px;
        }
        /* 設置提示信息樣式 */
        #remind{
            font-size:13px;
            text-align: center;
            color:gray;
            margin: 5px;
        }
        /* 設置彈性布局 */
        .one {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 40px;
        }
        /* 設置文字內容 */
        .two {
            width: 100px;
            line-height: 40px;
        }
        /* 設置輸入框 */
        .one .text{
            width: 200px;
            height: 20px;
        }
        /* 提交按鈕的設置 */
        .one .press{
            width: 304px;
            height: 40px;
            color:white;
            background-color: orange;
            border-radius: 5px;
            border: none;
        } 
        /* 設置鼠標點擊的時候改變顏色 */
        .one .press:active{
            background-color: red;
        }
        /* 提交之和內容的設置 */
        .elem {
            text-align: center;
            
        }
    </style>
    <script>
        // 獲取到輸入框元素
        let texts = document.querySelectorAll('.text');
        // 獲取到提交按鈕元素
        let press = document.querySelector('.press');
        // 設置單擊事件
        press.onclick = function() {
            let user1 = texts[0].value;
            let user2 = texts[1].value;
            let message = texts[2].value;
            // 如果有一個為空,就提交不成功
            if(user1=='' || user2=='' || message==''){
                return;
            }   
            // 這里都不為空,創建新的節點 
            let elem = document.createElement('p');
            elem.className = 'elem';
            elem.innerHTML = user1 + '對' + user2 + '說: ' +message;
            // 插入新的節點
            let parent = document.querySelector('.parent');
            parent.appendChild(elem);
            // 提交之后,將輸入框置空.
            for(let i = 0; i < 3; i++){
                texts[i].value='';
            }
        }
    </script></body></html>

運行截圖:
JavaScript WebAPI的概念是什么

5.3 待辦事項

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>待辦事項</title></head><body>
    <p class="parent">
        <p class="one">
            <input type="text" class="text"><input type="button" value="新建任務" class="submit">
        </p>
        <p class="two">
            <p class="left">
                <h4>未完成</h4>
            </p>


            <p class="right">
                <h4>已完成</h4>
            </p>
        </p>
    </p>
    <style>
        /* 去除瀏覽器默認樣式 */
        * {
            margin: 0;
            padding: 0;
        }
        /* 設置寬度 */
        .parent {
            width: 840px;
            margin: 0 auto;
        }
        /* 設置輸入框和新建的樣式 */
        .one {
            height: 50px;
            padding: 20px;
        }
        /* 設置輸入框樣式 */
        .one .text{
            height: 50px;
            width: 600px;
        }
        /* 設置提交框樣式 */
        .one .submit {
            background-color: orange;
            color: white;
            height: 50px;
            width: 196px;
            border: none;
        }
        /* 設置點擊時的背景 */
        .one .submit:active{
            background-color: red;
        }
        /* 設置已完成和未完成的樣式 */
        .two{
            width: 800px;
            height: 800px;
            display: flex;
            margin: 0 auto;
        }
        /* 設置未完成和已完成字體樣式 */
        .two h4 {
            height: 50px;
            text-align: center;
            line-height: 50px;
            background-color: black;
            color: white;
        }
        /* 設置未完成左邊的樣式 */
        .left {
            width: 50%;
            height: 100%;
        }
        /* 設置已完成右邊的樣式 */
        .right {
            width: 50%;
            height: 100%;
        }
        /* 新建任務的樣式 */
        .row {
            height: 50px;
            display: flex;
            align-items: center;
        }
        /* 新建任務字體的樣式 */
        .row span {
            width: 340px;
        }
        /* 新建任務的刪除按鈕樣式 */
        .row button{
            width: 40px;
            height: 40px;
        }
    </style>
    <script>
        // 首先獲取新建按鈕元素
        let submit = document.querySelector('.submit');
        // 設置鼠標單擊事件
        submit.onclick = function() {
            // 獲取輸入框元素
            let text = document.querySelector('.text');
            // 判斷輸入框內容是否為空
            if(text.value == '') return;
            // 新建代辦事項
            let row = document.createElement('p');
            row.className='row';
            let checkBox = document.createElement('input');
            checkBox.type='checkbox';
            let thing = document.createElement('span');
            thing.innerHTML = text.value;
            let del = document.createElement('button');
            del.innerHTML='刪除';
            row.appendChild(checkBox);
            row.appendChild(thing);
            row.appendChild(del);
            // 獲取左邊元素
            let left = document.querySelector('.left');
            left.appendChild(row);
            // 添加節點之后置空
            text.value='';

            // 設置選擇框的鼠標單擊事件
            checkBox.onclick = function() {
                // 如果被選擇了就移動已完成
                // 如果未完成就移動到未完成
                if(checkBox.checked){
                    let target = document.querySelector('.right');
                    target.appendChild(row);
                }else{
                    let target = document.q                    uerySelector('.left');
                    target.appendChild(row);
                }
            }
            // 設置刪除按鈕的鼠標單擊事件
            del.onclick = function() {
                // 使用 parentNode 獲取到父節點
                let parent = row.parentNode;
                // 刪除該節點
                parent.removeChild(row);
            }
        }
    </script></body></html>

運行截圖:
JavaScript WebAPI的概念是什么

關于“JavaScript WebAPI的概念是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“JavaScript WebAPI的概念是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

池州市| 汾西县| 新津县| 连城县| 河北省| 应城市| 吉隆县| 延吉市| 阳山县| 蕉岭县| 当阳市| 东安县| 弋阳县| 新河县| 晋宁县| 无为县| 客服| 措美县| 资中县| 甘南县| 紫云| 泰宁县| 瑞丽市| 朝阳市| 江永县| 德江县| 会泽县| 贵定县| 札达县| 德保县| 定西市| 独山县| 亚东县| 常宁市| 苏州市| 丰镇市| 洛扎县| 茌平县| 临漳县| 定州市| 陆河县|