java Script

来源:https://www.cnblogs.com/am0304/archive/2022/07/17/16486811.html
-Advertisement-
Play Games

JavaScript JavaScript(簡稱“JS”)是一種具有函數優先的輕量級,解釋型或即時編譯型的高級編程語言,弱類型,腳本語言 三大部分 核心(ECMAScript):語法、類型、語句、關鍵字等 文檔對象模型(DOM):專門用於完成網頁之間的交互 瀏覽器對象模型(BOM):主要用於對瀏覽器 ...


JavaScript

JavaScript(簡稱“JS”)是一種具有函數優先的輕量級,解釋型或即時編譯型的高級編程語言,弱類型,腳本語言

三大部分

核心(ECMAScript):語法、類型、語句、關鍵字等

文檔對象模型(DOM):專門用於完成網頁之間的交互

瀏覽器對象模型(BOM):主要用於對瀏覽器視窗進行操作

運行過程

說明: clipboard.png

使用方式

1、在html文件中的**<script></script>**標簽中直接編寫

  • script標簽可以寫多個
  • script標簽可以出現在任意位置

2、在js文件中編寫,在HTML文件中引用

<script src="Script文件地址"></script>

ECMAScript

數據類型

說明: clipboard.png

數組

/*定義數組*/
var a = new Array();
//或
var a = [1,"lucy"];
/*數組索引操作*/
a[0] = 12;
a[1] = "lucy";
document.write(a[0] + "," + a[1]);

允許存放不同的數據類型,但是一般存放統一的數據類型

數組元素沒有存放的位置,預設值undefined

常用方法

a.length(); //數組長度
a.push(); //往數組尾部添加元素,類似與進棧
a.pop(); //取值數組最後一個元素,並且移除該元素,類似與出棧

對象

/* 聲明對象 */
var student = {name:"lucy",age:12,sex:"男"};
/*對象屬性賦值*/
student.age = 15;
/*使用對象的屬性,對象名.屬性*/
document.write(student.name + "," + student.age + "," + student.sex);

變數

JavaScript使用var、let關鍵字定義變數

var 變數名 = 值;
let 變數名 = 值;

變數名稱對大小寫敏感

註釋

  • 單行註釋://
  • 多行註釋:/* ... */

運算符

算數運算符

除法和java不一樣,數/數 = 數學結果,1 / 2 = 0.5

其餘運算符與java中一致

關係運算符

==:只比較值是否相等,和類型無關(基本數據類型)

===:絕對等於(值和類型都相等)

!=:只比較值是否不相等,和類型無關(基本數據類型)

!==:絕對不等於(值和類型都不相等)

邏輯運算符

&、|的結果為數值0(false)、1(true)

其餘運算符和java相似

函數

函數可以將一些代碼放置在一起,形成一個代碼塊,該代碼塊可以反覆的進行使用

格式

/*定義函數*/
function 函數名(參數列表){
    return 返回值    //可選
}
/*調用函數*/
函數名();

註意

1、函數可以多個,如果一旦方法的名字相同的話,函數沒有重載,後面同名函數會覆蓋前面的同名函數

2、調用函數時,可以傳入比函數定義參數更多的參數,只是多出來的參數不會被處理

3、對象的屬性也可以是函數,可以使用**對象名.函數名()**進行調用

  • 如果需要在對象中的函數調用對象的屬性的話,不可以直接寫屬性名進行調用
  • 需要使用this.屬性進行調用

4、變數的作用域是在一個函數中

分支結構

if...else if...else的使用方法和java中的類似

switch...case的使用方法和java中的類似,使用時需要註意數據類型,在匹配時,需要絕對等於

迴圈結構

for迴圈

和java中的類似

for...in迴圈

//迴圈遍曆數組
for(var i in arr) {
    alert(i + "..." + arr[i]);
}

while迴圈

和java類似

do...while迴圈

和java類似

迴圈中的break和continue關鍵字的效果和java中一樣

常用API

document.write("輸出的內容,可以帶html標簽")
console.log("在瀏覽器控制台輸出,調試模式下可以看到")
Math.random()  //隨機數
parseInt(將數值解析為整數)
prompt("請輸入"); //彈窗輸入
eval("1+1"); // 可以計算字元串的結果

DOM

文檔對象模型(Document Object Model)

在網頁被載入時,瀏覽器會創建頁面文檔對象模型,形成DOM樹

DOM樹

說明: clipboard.png

  • Document:樹對象,文檔對象
  • Element:元素對象,標簽對象
  • Attribute:屬性對象
  • Text:文本對象
  • Comment:註釋對象
  • Node:節點對象

獲取標簽對象的相關方法

方法作用備註
getElementById() 根據標簽的id屬性值來獲取標簽對象 一般id屬性是用來獲取標簽對象
getElementsByName() 根據標簽的name屬性值來獲取標簽對象們 一般name屬性是用來給後臺獲取數據用的
getElementsByTagName() 根據標簽名來獲取標簽對象們  
getElementsByClassName() 根據標簽的class屬性值來獲取標簽對象們 一般class屬性是用來進行樣式設置的,使用類選擇器

如果直接在script標簽中執行獲取標簽對象的方法,頁面沒有載入,獲取的對象為null

//頁面載入完成,再執行函數
window.onload = function(){}

創建元素的相關方法

方法方法
createElement() 創建元素節點
createAttribute(name) 創建擁有指定名稱的屬性節點,並返回新的 Attribute 對象
createTextNode() 創建文本節點
createComment() 創建註釋節點

==註意:創建出來的對象,都是游離狀態,需要放置在父元素對象上==

父元素對象.appendChild(創建的子元素對象);
//刪除子元素對象
父元素對象.removeChild(需要刪除的子元素對象);

對元素對象內容進行操作

操作的是元素對象,不可以操作元素對象數組,如果需要批量操作,只能寫迴圈進行

獲取修改標簽內容

標簽對象.innerHTML = "字元串";
標簽對象.innerText = "字元串";
//區別
innerHTML,獲取到的是HTML語句,用於處理標簽,會解析字元串中的標簽內容
innerText,獲取到的是內容,用於處理文本,不會解析字元串中的標簽內容

獲取修改標簽屬性

標簽對象.屬性名 = "屬性值";

獲取修改標簽樣式

//在標簽上添加樣式(樣式多的話,不推薦)
標簽對象.style.樣式名 = "值";
//給元素對象添加類屬性,在style標簽中添加類樣式
標簽對象.className = "類名"  //只可以加一個類名
標簽對象.classList.add("類名1","類名2",...); //可以添加多類名
//刪除多類名元素對象的一個類名
標簽對象.classList.remove("類名");

事件

事件的綁定方式

1、在標簽元素上添加onXXX屬性的方式綁定(xxx代表事件名稱)onXXX的值為js代碼,缺點是耦合度高

2、獲取標簽元素的對象,通過標簽.onXXX = function(){},綁定事件

3、通過dom元素對象的addEventListener("事件名稱",function(){},傳播特性)方法綁定事件(事件名稱不需要on首碼),推薦

JS中的事件

  • 點擊事件
    • onclick:滑鼠點擊某個對象
    • ondblclick:滑鼠雙擊某個對象
  • 焦點事件
    • onblur:元素失去焦點
    • onfocus:元素獲得焦點
    • blur():一調用,就會失去焦點
    • focus():一調用,就會獲取焦點
  • 鍵盤相關事件
    • onkeydown:某個鍵盤的鍵被按下
    • onkeypress:某個鍵盤的鍵被按下或按住,某個鍵盤按鍵被按下並鬆開。
    • onkeyup:某個鍵盤的鍵被鬆開
  • 載入事件
    • onload:某個頁面或圖像被完成載入
    • onunload:用戶離開某個頁面
  • 滑鼠相關事件
    • onmousedown:某個滑鼠按鍵被按下
    • onmousemove:滑鼠被移動
    • onmouseout:滑鼠從某元素移開
    • onmouseover:滑鼠被移到某元素之上
    • onmouseup:某個滑鼠按鍵被鬆開
  • 表單相關事件
    • onchange:用戶改變域的內容
      • 支持該事件的 HTML 標簽:<input type="text">, <select>, <textarea>
    • onselect:文本被選定
      • 支持該事件的 HTML 標簽:<input type="text">, <textarea>
    • onsubmit 提交按鈕被點擊

事件的傳播特性

說明: clipboard.png

**addEventListener("事件名稱",function(){},傳播特性):**預設的傳播方式是false,冒泡

事件的冒泡

如果點擊最內層的紅色元素的話,點擊事件也會傳播到外層的藍色元素,稱為事件的冒泡

事件的捕獲

==addEventListener可以改變事件的傳播方式,第三個參數為true==

如果點擊最外層的藍色元素的話,點擊事件會傳播到內層的紅色元素,稱為事件的捕獲

事件的委托

將一個元素A中的子元素的點擊事件交給元素A處理,稱為事件的委托

例如,接收表格中的按鈕的點擊事件

//變數e用於接收瀏覽器傳入的點擊目標對象信息
table.onclick = function(e){
    //獲取到事件的觸發元素對象
    var t = e.target;
    //獲取觸發元素對象的名稱
    var butName = t.innerText;
    //篩選按鈕類型
    switch(butName){
        case "購買":
            //獲取購買按鈕的父元素對象
            var td = but.parentElement;
            //獲取td對象的父元素對象
            var tr = td.parentElement;
            //獲取tr的td子元素
            var tds = tr.children;
            alert("購買:" + tds[0].innerText);
            break;
        case "加入購物車":
            break;
        case "查看詳情":
            break;
    }
}

正則表達式

格式

//正則表達式格式
/正則表達式主體/修飾符(可選)
//正則表達式驗證
var regExp = /正則表達式/;
regExp.test("校驗的字元串");

規則

方括弧用於查找某個範圍內的字元:

表達式描述
[abc] 查找方括弧之間的任何字元。
[0-9] 查找任何從 0 至 9 的數字。
(x y)
n{x} n恰好出現x次
n{x,} n最少出現x次
n{x,y} n最少出現x次,最多y次

元字元是擁有特殊含義的字元:

元字元描述
\d 查找數字。
\s 查找空白字元。
\w 匹配數字、字母、下劃線
\W 匹配任意不是數字、字母、下劃線
. 匹配除換行符以外的任意單個字元
^ 行的開頭
$ 行的結尾
\uxxxx 查找以十六進位數 xxxx 規定的 Unicode 字元。

量詞:

量詞描述
n+ 匹配任何包含至少一個 n 的字元串。
n* 匹配任何包含零個或多個 n 的字元串。
n? 匹配任何包含零個或一個 n 的字元串。

修飾符可以在全局搜索中不區分大小寫:

修飾符描述
i 執行對大小寫不敏感的匹配。
g 執行全局匹配(查找所有匹配而非在找到第一個匹配後停止)。
m 執行多行匹配。

使用String類型的match方法,可以匹配正則表達式

var a = "abcABC";
var r = a.match(/b/gi);

使用String類型的replace方法,可以替換字元串中的字元

var a = "sb,fuck";
var r = a.replace(/(sb)|(fuck)/gi,"*");

使用String類型的search方法,可以查詢匹配的類型首次開始位置索引

var a = "abc,efg,123,hig";
var r = a.search(/\d/g);

使用String類型的split方法,可以按照特定規則分割字元串

var a = "abc12def34";
var r = a.split(/\d+/);

漢字的Unicode編碼:[\u4e00-\u9fa5]

在表單標簽相關屬性:

pattern:相關文本規則,正則表達式不需要//

required:值為required,值不可以為空

BOM

瀏覽器對象模型(Browser Object Model)尚無正式標準

Window對象

所有瀏覽器都支持 window 對象。它表示瀏覽器視窗。

所有 JavaScript 全局對象、函數以及變數均自動成為 window 對象的成員

全局變數是 window 對象的屬性。

全局函數是 window 對象的方法。

Window 常用屬性、方法

window.innerHeight - 瀏覽器視窗的內部高度(包括滾動條)

window.innerWidth - 瀏覽器視窗的內部寬度(包括滾動條)

window.open("新視窗地址","新視窗名稱","新視窗其餘屬性設置") - 打開新視窗

window.close() - 關閉當前視窗

window.moveTo() - 移動當前視窗

window.resizeTo() - 調整當前視窗的尺寸

Screen對象

window.screen 對象包含有關用戶屏幕的信息。

Screen常用屬性、方法

screen.availWidth - 可用的屏幕寬度

screen.availHeight - 可用的屏幕高度

screen.colorDepth - 色彩深度

screen.pixelDepth - 色彩解析度

Location對象

window.location 對象用於獲得當前頁面的地址 (URL),並把瀏覽器本視窗重定向到新的頁面。

Location常用屬性、方法

location.hostname - 返回 web 主機的功能變數名稱

location.pathname - 返回當前頁面的路徑和文件名

location.port - 返回 web 主機的埠 (80 或 443)

location.protocol - 返回所使用的 web 協議(http: 或 https:)

location.href 返回當前頁面的 URL

location.href = 'URL' - 可以重定向到新的頁面

location.assign() 方法載入新的文檔

history對象

window.history 對象包含瀏覽器的歷史。

history常用屬性、方法

history.go():載入 history 列表中的某個具體頁面,go方法中可以傳遞參數,如果是正數,就是下某頁,如果是負數,就是上某頁

history.length:返回瀏覽器歷史列表中的 URL 數量

history.back() - 與在瀏覽器點擊後退按鈕相同

history.forward() - 與在瀏覽器中點擊向前按鈕相同

計時事件

setInterval():按照指定的周期(以毫秒計)來調用函數或計算表達式

  • 第一個參數:時間到了要執行的方法
  • 第二個參數:周期(毫秒)
  • 如果不關閉,它會一直執行下去

clearInterval():取消由setInterval()設置的timeout

setTimeout():在指定的毫秒數後調用函數或計算表達式

  • 第一個參數:時間到了要執行的方法
  • 第二個參數:過多長時間執行該方法(毫秒)
  • 執行完一次之後,就不再執行

clearTimeout():取消由 setTimeout()方法設置的timeout

彈窗

可以在 JavaScript 中創建三種消息框:警告框、確認框、提示框。

警告框

alert("警告信息");

確認框

confirm("提示信息");

返回值為boolean類型,選擇確定返回true,選擇取消返回false

提示框

當提示框出現後,用戶需要輸入某個值,然後點擊確認或取消按鈕才能繼續操縱。

如果用戶點擊確認,那麼返回值為輸入的值。如果用戶點擊取消,那麼返回值為 null。

window.prompt("提示信息","預設值");

Cookie對象

Cookie 用於存儲 web 頁面的用戶信息。

Cookie 是一些數據, 存儲於你電腦上的文本文件中。

當 web 伺服器向瀏覽器發送 web 頁面時,在連接關閉後,服務端不會記錄用戶的信息。

創建Cookie

JavaScript 可以使用 document.cookie 屬性來創建 、讀取、及刪除 cookie。

document.cookie="key=value";

添加過期時間

以 UTC 或 GMT 時間,預設情況下,cookie 在瀏覽器關閉時刪除

document.cookie="key=value; expires=Thu, 18 Dec 2043 12:00:00 GMT";

可以使用 path 參數告訴瀏覽器 cookie 的路徑。預設情況下,cookie 屬於當前頁面。

document.cookie="key=value; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";

讀取 Cookie

document.cookie 將以字元串的方式返回所有的 cookie,類型格式: key1=value;key2 =value; key3=value;

var x = document.cookie;

刪除 Cookie

只需要設置 expires 參數為以前的時間即可

document.cookie = "key=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

刪除時不必指定 cookie 的值


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Color Wheel for Mac是一款可直接輸出Web顏色代碼的取色工具,通過方便的Hex/RGB/Float/HSL翻譯提供即時訪問標準Mac OS X的ColorWheel,任何網頁設計師的工具箱都應該有它,將它配置在工具欄上,並打開一個全局熱鍵,使用方便又快捷。 詳情:Color Whe ...
  • 許多有Mac的朋友問,Parallels Desktop 17能不能安裝Windows11呢?可以告訴你,非常的簡單。 如圖,安裝Windows 11出現問題,如圖: 這裡先事先說明一下:安裝win11必須是預覽版的,正式版的win11目前還不可以哦。 具體操作如下: 1、詳情虛擬機(M1和Inte ...
  • 還在尋找一款好用的終端模擬器?ZOC for Mac是一款適用於MAC平臺,眾所周知的telnet/SSH/SSH2客戶端和終端模擬器,ZOC Mac版的功能強大,如標簽會,鍵入命令歷史,回溯,多視窗的支持等等,和落到實處的模擬使它成為人們的首選工具! 詳情:ZOC for Mac(最好用的終端模擬 ...
  • 查找結構的進化 二分查找 二叉樹 二叉平衡樹 B-TREE :二叉平衡樹的基礎上,使載入一次節點,可以載入更多路徑數據,同時把查詢範圍縮減到更小 缺點:業務數據的大小可能遠遠超過了索引數據的大小,每次為了查找對比計算,需要把數據載入到記憶體以及 CPU 高速緩存中時,都要把索引數據和無關的業務數據全部 ...
  • 數據準備: --建表 create table customer_jia(CID int(4), Cname varchar(20), Csex varchar(2), Cage int(3), Cjob varchar(20), CCNO int(2) ); create table compan ...
  • Vue面試題總結(持續更新中) 題目參考鏈接 https://blog.csdn.net/weixin_45257157/article/details/106215158 由於已經有很多前輩深造VUE的某一塊知識,所以我也是大樹下好乘涼,進行總結與積累。 就有這篇博客,希望對各位面試求職的同學有所 ...
  • 首先是關於本人對一個新事物的理解路線 對html的認知: what:首先我得知道它是什麼?html是一門超文本標記語言,它不是一門編程語言 why:它為什麼會存在?它存在的意義是什麼?隨著互聯網的發展,人們通常通過手機、電腦等網路渠道獲取信息和生產生活,故它的存在是為了製作網頁 how:這門語言該怎 ...
  • XML 可擴展標記語言(Extensive Markup Language),標簽中的元素名是可以自己隨意寫,可拓展是相對於html來說 標記語言:由一對尖括弧括起來<內容>,就稱為標記,標簽;代碼都是由標簽組成,就稱為標記語言 作用 用來當做配置文件 xml的配置文件和properties的配置文 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...