主頁 > 前端設計 > Web API介紹及DOM物件(一)

Web API介紹及DOM物件(一)

2021-09-17 10:32:08 前端設計

目錄

一、API 和 Web API

1.API

2.Web API

3.API 和 Web API總結

二、DOM 介紹

1. DOM樹

三、獲取元素方法

1.getElementById()

2.getElementsByTagName

2.1element.getElementsByTagName()

3.HTML5 新增的方法獲取

3.1 document.getElementsByClassName('類名')

3.2 document.querySelector('選擇器')

3.3 document.querySelectorAll('選擇器')

4.獲取 body 、html 元素

四、事件和樣式操作

1.事件概述

2.執行事件的步驟

2.1 常見的滑鼠事件

3. 操作元素

3.1 改變元素內容

3.2 修改元素屬性

3.3 修改表單元素的屬性

3.4 修改樣式屬性


一、API 和 Web API

1.API

API( Application Programming Interface,應用程式編程介面)
是一些預先定義的函式,目的是提供應用程式
與開發人員基于某軟體或硬體得以訪問一組例程的能力,而又無需訪問原始碼,或理解內部作業機制的細節,
簡單理解: API是給程式員提供的一種工具,以便能更輕松的實作想要完成的功能

2.Web API

Web API是瀏覽器提供的一套操作瀏覽器功能和頁面元素的API( BOM和DOM),

比如我們想要瀏覽器彈出一個警示框,直接使用alert( '彈出');

3.API 和 Web API總結

1. API是為我們程式員提供的一個介面,幫助我們實作某種功能,我們會使用就可以,不必糾結內部如何實作
2. Web API主要是針對于瀏覽器提供的介面,主要針對于瀏覽器做互動效果
3. Web API 一般都有輸入和輸出(函式的傳參和回傳值) ,Web API很多都是方法(函式)
4.學習Web API可以結合學習內置物件方法的思路學習

二、DOM 介紹

檔案物件模型( Document Object
Model ,簡稱DOM) ,是W3C組織推薦的處理可擴展標記語言( HTML或者XML )的標準編程介面
W3C已經定義了一系列的DOM介面,通過這些DOM介面可以改變網頁的內容、結構和樣式

1. DOM樹

  • 檔案:一個頁面就是一個檔案,DOM中使用 document表示
  • 元素:頁面中的所有標簽都是元素,DOM中使用 element表示
  • 節點:網頁中的所有內容都是節點(標簽、屬性、文本、注釋等),DOM中使用 node表示

DOM把以上內容都看作是物件

三、獲取元素方法

1.getElementById()

使用 getElementById( ) 方法可以獲取帶有ID的元素物件

<div id="time" >2019-9-9 </div>
<script>
var timer = document.getElementById('time');
console.dir(timer);
</script>

//回傳結果為<div id= "time">2019-9-9</div>這一整個標簽

注意:
1.因為我們檔案頁面從上往下加載,先得有標簽所以我們script 寫到標簽的下面
2. get 獲得element 元素 by 通過駝峰命名法
3.引數 id 是大小寫敏感的字串
4.回傳的是一個元素的物件
5. console.dir 列印我們回傳的元素物件更好的查看里面的屬性和方法

2.getElementsByTagName

使用getElementsByTagName()方法可以回傳帶有指定標簽名的物件的集合
document.getElementsByTagName('標簽名');

    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <script>
        var lis = document.getElementsByTagName('li');
        console.log(lis);
    </script>

1. 回傳的是 獲取過來元素物件的集合 以偽陣列的形式存盤的

2. 我們想要依次列印里面的元素物件我們可以采取遍歷的方式
for(var i = 0; i < lis.length; i++) {
console.log(lis[i]);
}

3. 得到元素物件是動態的,標簽里面的內容變了,得到的內容就變了.

2.1element.getElementsByTagName()

element.getElementsByTagName() 可以得到這個元素里面的某些標簽

    <ul id = "nav">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <script>
        var nav = document.getElementById('nav');
        var navLis = nav.getElementsByTagName('li');
    </script>

3.HTML5 新增的方法獲取

3.1 document.getElementsByClassName('類名')

根據類名回傳元素物件集合

 <div class="box" >123</div>
<script>
var boxs = document.getElementsByClassName('box');
</script>

3.2 document.querySelector('選擇器')

根據指定選擇器回傳第一個元素物件
注意:里面的選擇器需要加符號 類選擇器:.box id選擇器: #box

var firstBox = document.querySelector('.box');

var nav = document.querySelector('#nav');

var firstBox = document.querySelector('li');

3.3 document.querySelectorAll('選擇器')

回傳指定選擇器的所有元素物件集合

var allBox = document.querySelectorAll('.box');

//回傳所有 class 名為 box 的標簽

4.獲取 body 、html 元素

var body = document.body ;
// 回傳 body 元素物件

var htmlEle = document.documentElement;
// 回傳 html 元素物件

四、事件和樣式操作

1.事件概述

JavaScript 使我們有能力創建動態頁面,而事件是可以被JavaScript偵測到的行為

簡單理解:觸發---回應機制

網頁中的每個元素都可以產生某些可以觸發 JavaScript 的事件,例如,我們可以在用戶點擊某按鈕時產生一個事件,然后去執行某些操作

事件是有三部分組成 事件源 事件型別 事件處理程式

  1. 事件源 事件被觸發的物件 比如按鈕
  2. 事件型別 如何觸發 比如滑鼠點擊觸發
  3. 事件處理程式 通過一個函式賦值的方式 完成

2.執行事件的步驟

1. 獲取事件源

2. 注冊事件(系結事件)

3. 添加事件處理程式(采用函式賦值形式)

2.1 常見的滑鼠事件

滑鼠事件觸發條件
onclick滑鼠點擊左鍵觸發
onmouseover滑鼠經過觸發
onmouseout滑鼠離開觸發
onfocus獲取滑鼠焦點觸發
onblur失去滑鼠焦點觸發
onmousemove滑鼠移動觸發
onmouseup滑鼠彈起觸發
onmousedown滑鼠按下觸發

3. 操作元素

JS的 DOM 操作可以改變網頁內容、結構和樣式,我們可以利用 DOM 操作元素來改變元素里面的內容、屬性等,注意一下都是屬性

3.1 改變元素內容

① element.innerText

可用于獲取標簽中的內容,此時獲取的是從起始位置到終止位置的內容,但它去除 html 標簽, 同時空格和換行也會去掉

獲取到 p 標簽再列印 p 標簽中的內容
var p = document.querySelector('p');
console.log(p.innerText);

② element.innerHTML

獲取內容時,獲取的是起始位置到終止位置的全部內容,包括 html 標簽, 同時保留空格和換行

獲取到 p 標簽再列印 p 標簽中的內容
var p = document.querySelector('p');
console.log(p.innerHTML);

普通標簽使用,表單不能用

3.2 修改元素屬性

src 、href、id 、 alt 、title

案例:點擊不同按鈕顯示不同圖片

    <title>Document</title>
    <style>
        img {
            width: 300px;
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <button id="but1">按鈕1</button>
    <button id="but2">按鈕2</button>
    <br>
    <img src="../images/objpic07.jpg" alt="" title="圖片1">
    <script>
        var item1 = document.getElementById('but1');
        var item2 = document.getElementById('but2');
        var img = document.querySelector('img');
        item1.onclick = function() {
            img.src = '../images/objpic07.jpg';
            img.title = '圖片1';
        }
        item2.onclick = function() {
            img.src = '../images/objpic08.jpg';
            img.title = '圖片2';
        }
    </script>
</body>

3.3 修改表單元素的屬性

可操作的表單元素的屬性: type 、value、 checked、 selected、 disabled

按下按鈕修改表單框 里面的內容,通過修改 value
input.value 等于 this.value 因為 this指向的是事件函式的呼叫者

案例:仿京東顯示隱藏密碼

 <title>Document</title>
    <style>
      .box {
          position: relative;
          width: 400px;
          border-bottom: 1px solid #ccc;
          margin: 100px auto;
      }
      .box input {
          width: 370px;
          height: 30px;
          border: 0;
          outline: none;
      }
      .box img {
          position: absolute;
          top: 2px;
          right: 2px;
          width: 24px;
      }
    </style>
</head>
<body>
    <div class="box">
        <label for="">
            <img src="../images/close.png" alt="" id="pic">
        </label>
        <input type="password" id="item">
    </div>
    <script>
          var item = document.getElementById('item');
          var pic = document.getElementById('pic');
          var flag = 0;
          pic.onclick = function() {
            if(flag == 0) {
                item.type = 'text';
                this.src = '../images/open.png';
                flag = 1;
            } else {
                item.type = 'password';
                this.src = '../images/close.png';
                flag = 0;
            }
          }
    </script>
</body>

3.4 修改樣式屬性

① element.style 行內樣式操作

② element.className 類名樣式操作

行內樣式案例:顯示與隱藏文本操作(當Input獲取焦點,文本框初始內容消失,失去焦點,內容出現)

 <title>Document</title>
    <style>
        input {
            color: #999;
            outline: none;
            height: 24px;
        }
    </style>
</head>
<body>
    <input type="text" value="手機">
    <script>
        var item = document.querySelector('input');
        item.onfocus = function() {
            if(this.value == '手機') {
                this.value = '';
            }
            this.style.color = '#333';
            this.style.border = '1px solid pink';
        }
        item.onblur = function() {
            if(this.value == '') {
                this.value = '手機';
            }
            this.style.color = '#999';
            this.style.border = '1px solid black';
        }
    </script>
</body>

類名樣式案例:密碼框驗證資訊(提示輸入6~16位密碼,不滿或超出提示錯誤,正確則提示正確)

 <title>Document</title>
    <style>
        .box {
            width: 400px;
            margin: 100px auto;
        }
        input {
            outline: none;
        }
        .pic {
            height: 15px;
            display: inline-block;
            line-height: 15px;
            text-indent: 18px;
            font-size: 13px;
            color:blue;
            background: url(../images/mess.png) no-repeat;
        }
        .wrong {
            background: url(../images/wrong.png) no-repeat;
            color: red;
        }

        .right {
            background: url(../images/right.png) no-repeat;
            color: green;
        }
    </style>
</head>
<body>
    <div class="box">
        <input type="password" class="ipt">
        <p class="pic">請輸入6~16位的密碼</p>
    </div>
    <script>
        var item = document.querySelector('.ipt');
        var item2 = document.querySelector('.pic');
        item.onblur = function() {
            if(this.value.length < 6 || this.value.length > 16) {
                item2.className = 'pic wrong';
                item2.innerHTML = '您輸入的位數不對要求6~16位';
            } else {
                item2.className = 'pic right';
                item2.innerHTML = '您輸入的正確!';
            }
        }
    </script>
</body>


今天的分享到這里就結束啦~對你有幫助的話點個贊喲~~

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/300767.html

標籤:其他

上一篇:前端面試題 Vuex 的基礎和應用方法

下一篇:寫大事件專案的get,post型別的介面

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more