1. 程式人生 > 實用技巧 >洛谷P6800 【模板】Chirp-Z Transform 題解

洛谷P6800 【模板】Chirp-Z Transform 題解

轉自狂神老師,僅作為個人筆記使用

【狂神說Java】JavaScript學習筆記

版權

本文章根據b站狂神說javascript視訊教程整理
視訊連結:https://www.bilibili.com/video/BV1JJ41177di?from=search&seid=6715593633392022867

0、前端知識體系
1、什麼是Javascript
2、快速入門
3、資料型別
4、函式
5、內部物件
6、面向物件程式設計
7、操作BOM物件(重點)
8、操作DOM物件(重點)
9、操作表單
10、jQuery

0、前端知識體系

想要成為真正的“網際網路Java全棧工程師”還有很長的一段路要走,其中前端是繞不開的一門必修課。本階段課程的主要目的就是帶領Java後臺程式設計師認識前端、瞭解前端、掌握前端,為實現成為“網際網路Java全棧工程師”再向前邁進一步。

0.1、前端三要素

  • HTML(結構):超文字標記語言(Hyper Text Markup Language),決定網頁的結構和內容
  • CSS(表現):層疊樣式表(Cascading Style Sheets),設定網頁的表現樣式。
  • JavaScript(行為):是一種弱型別指令碼語言,其原始碼不需經過編譯,而是由瀏覽器解釋執行,用於控制網頁的行為

0.2、結構層(HTML)

太簡單,略

0.3、表現層(CSS)

CSS層疊樣式表是一門標記語言,並不是程式語言,因此不可以自定義變數,不可以引用等,換句話說就是不具備任何語法支援,它主要缺陷如下:

  • 語法不夠強大,比如無法巢狀書寫,導致模組化開發中需要書寫很多重複的選擇器;
  • 沒有變數和合理的樣式複用機制,使得邏輯上相關的屬性值必須以字面量的形式重複輸出,導致難以維護;
    這就導致了我們在工作中無端增加了許多工作量。為了解決這個問題,前端開發人員會使用一種稱之為【CSS前處理器】的工具,提供CSS缺失的樣式層複用機制、減少冗餘程式碼,提高樣式程式碼的可維護性。大大的提高了前端在樣式上的開發效率。

什麼是CSS前處理器

CSS前處理器定義了一種新的語言,其基本思想是,用一種專門的程式語言,為CSS增加了一些程式設計的特性,將CSS作為目標生成檔案,然後開發者就只需要使用這種語言進行CSS的編碼工作。轉化成通俗易懂的話來說就是“用一種專門的程式語言,進行Web頁面樣式設計,再通過編譯器轉化為正常的CSS檔案,以供專案使用”

常用的CSS前處理器有哪些

  • SASS:基於Ruby ,通過服務端處理,功能強大。解析效率高。需要學習Ruby語言,上手難度高於LESS。
  • LESS:基於NodeJS,通過客戶端處理,使用簡單。功能比SASS簡單,解析效率也低於SASS,但在實際開發中足夠了,所以如果我們後臺人員如果需要的話,建議使用LESS。

0.4、行為層(JavaScript)

JavaScript一門弱型別指令碼語言,其原始碼在發往客戶端執行之前不需要經過編譯,而是將文字格式的字元程式碼傳送給瀏覽器,由瀏覽器解釋執行。

JavaScript框架

  • JQuery:大家熟知的JavaScript庫,優點就是簡化了DOM操作,缺點就是DOM操作太頻繁,影響前端效能;在前端眼裡使用它僅僅是為了相容IE6,7,8;
  • Angular:Google收購的前端框架,由一群Java程式設計師開發,其特點是將後臺的MVC模式搬到了前端並增加了模組化開發的理念,與微軟合作,採用了TypeScript語法開發;對後臺程式設計師友好,對前端程式設計師不太友好;最大的缺點是版本迭代不合理(如1代–>2 代,除了名字,基本就是兩個東西;截止發表部落格時已推出了Angular6)
  • React:Facebook 出品,一款高效能的JS前端框架;特點是提出了新概念 【虛擬DOM】用於減少真實 DOM 操作,在記憶體中模擬 DOM操作,有效的提升了前端渲染效率;缺點是使用複雜,因為需要額外學習一門【JSX】語言;
  • Vue:一款漸進式 JavaScript 框架,所謂漸進式就是逐步實現新特性的意思,如實現模組化開發、路由、狀態管理等新特性。其特點是綜合了 Angular(模組化)和React(虛擬 DOM) 的優點;
  • Axios:前端通訊框架;因為 Vue 的邊界很明確,就是為了處理 DOM,所以並不具備通訊能力,此時就需要額外使用一個通訊框架與伺服器互動;當然也可以直接選擇使用jQuery 提供的AJAX 通訊功能;

UI框架

  • Ant-Design:阿里巴巴出品,基於React的UI框架
  • ElementUI、iview、ice:餓了麼出品,基於Vue的UI框架
  • BootStrap:Teitter推出的一個用於前端開發的開源工具包
  • AmazeUI:又叫“妹子UI”,一款HTML5跨屏前端框架

JavaScript構建工具

  • Babel:JS編譯工具,主要用於瀏覽器不支援的ES新特性,比如用於編譯TypeScript
  • WebPack:模組打包器,主要作用就是打包、壓縮、合併及按序載入

注:以上知識點已將WebApp開發所需技能全部梳理完畢

0.5、三端同一

混合開發(Hybrid App)

主要目的是實現一套程式碼三端統一(PC、Android:.apk、iOS:.ipa)並能夠呼叫到裝置底層硬體(如:感測器、GPS、攝像頭等),打包方式主要有以下兩種:

  • 雲打包:HBuild -> HBuildX,DCloud 出品;API Cloud
  • 本地打包: Cordova(前身是 PhoneGap)

微信小程式

詳見微信官網,這裡就是介紹一個方便微信小程式UI開發的框架:WeUI

1、什麼是Javascript

1.1、概述

javaScript是一門世界上最流行的指令碼語言
Java,JavaScript
10天
一個合格的後端人員,必須精通JavaScript

1.2、歷史

見百度

ECMAScript它可以理解為JavaScript的一個標準
最新版本已經到es6版本~
但是大部分瀏覽器還只停留在支援es5程式碼上!
開發環境–線上環境,版本不一致

2、快速入門

2.1、引入JavaScript

1、內部標籤

<script> 
//....
</script>

2、外部引入

hj.js

alert("hello,world");

test.html

 <!--外部引入
        注意:script必須成對出現
    -->
    <script src="js/hj.js"></script>

    <!--不用顯示定義type,也預設就是javaScript-->
    <script type="text/javascript"></script>

測試程式碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--script標籤內,寫Javascript程式碼-->
    <!--<script>
        alert("hello,world");
    </script>-->

    <!--外部引入
        注意:script必須成對出現
    -->
    <script src="js/hj.js"></script>

    <!--不用顯示定義type,也預設就是javaScript-->
    <script type="text/javascript"></script>
</head>
<body>


<!--這裡也可以存放-->
</body>
</html>

2.2、基本語法入門

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--JavaScript嚴格區分大小寫-->
    <script>
        // 1. 定義變數   變數型別 變數名 = 變數值
        var score = 1 ;
        //alert(num)
        // 2. 條件控制

        if (score > 60 && score < 70){
            alert("60~70");
        }else if(score > 70 && score < 80){
            alert("70~80");
        }else{
            alert("other")
        }
    </script>
</head>
<body>

</body>
</html>

瀏覽器必備除錯須知(前端的除錯啊,重點用):

Elements 審查元素(跑網站用。復刻程式碼)

Console 控制檯(除錯js,使用console.log(),)

Sources 原始碼(可以打斷點除錯)

Network 網路請求(抓包用)

Performance

Memory

Application 瀏覽器快取(檢視網站Cookies)

Security

Lighthouse

2.3、資料型別

數值,文字,圖形,音訊,視訊

變數

var a

number

js不區分小樹和整數,Number

123//整數123
123.1//浮點數123.1
1.123e3//科學計數法
-99//負數
NaN	//not a number
Infinity // 表示無限大

字串

‘abc’ “abc”

布林值

true,false

邏輯運算

&& 兩個都為真,結果為真

|| 一個為真,結果為真

! 	真即假,假即真

比較運算子 !!!重要!

=
1,"1"
== 等於(型別不一樣,值一樣,也會判斷為true)
=== 絕對等於(型別一樣,值一樣,結果為true)

這是一個JS的缺陷,堅持不要使用 == 比較
須知:

  • NaN === NaN,這個與所有的數值都不相等,包括自己
  • 只能通過isNaN(NaN)來判斷這個數是否是NaN

浮點數問題

console.log((1/3) === (1-2/3))

儘量避免使用浮點數進行運算,存在精度問題!

Math.abs(1/3-(1-2/3))<0.00000001

null 和 undefined

  • null 空
  • undefined 未定義

陣列

Java的陣列必須是相同型別的物件~,JS中不需要這樣

//保證程式碼的可讀性,儘量使用[]
var arr = [1,2,3,4,5,'hello',null,true];
//第二種定義方法
new Array(1,2,3,4,5,'hello');

取數字下標:如果越界了,就會 報undefined

undefined

物件

物件是大括號,陣列是中括號

每個屬性之間使用逗號隔開,最後一個屬性不需要逗號

// Person person = new Person(1,2,3,4,5);

var person = {
	name:'Tom',
	age:3,
	tags:['js','java','web','...']
}

取物件值

person.name
> "Tom"
person.age
> 3

2.4、嚴格檢查格式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--
    前提:IDEA需要設定支援ES6語法
        'use strict';嚴格檢查模式,預防JavaScript的隨意性導致產生的一些問題
        必須寫在JavaScript的第一行!
        區域性變數建議都使用let去定義~
    -->
    <script>
        'use strict';
        //全域性變數
         let i=1
        //ES6 let
    </script>
</head>
<body>

</body>
</html>

3、資料型別

3.1、字串

1、正常字串我們使用 單引號,或者雙引號包裹

2、注意轉義字元 \

\'
\n 換行
\t tab鍵
\u4e2d    \u##### Unicode字元

\x41	Ascall字元
123456

3、多行字串編寫

//tab 上面 esc下面
        var msg =
            `hello
            world
            你好呀
            nihao
            `

4、模板字串

//tab 上面 esc下面
let name = 'Tom';
let age = 3;
var msg = `你好,${name}`

5、字串長度

str.length

6、字串的可變性,不可變

7、大小寫轉換

//注意,這裡是方法,不是屬性了
student.toUpperCase();
student.toLowerCase();

8、student.indexof(‘t’)

9、substring,從0開始

[)
student.substring(1)//從第一個字串擷取到最後一個字串
student.substring(1,3)//[1,3)
123

3.2、陣列

Array可以包含任意的資料型別

var arr = [1,2,3,4,5,6];//通過下標取值和賦值

1、長度

arr.length

注意:假如給arr.lennth賦值,陣列大小就會發生變化~,如果賦值過小,元素就會丟失

2、indexOf,通過元素獲得下標索引

arr.indexOf(2)

字串的"1"和數字 1 是不同的

3、slice()擷取Array的一部分,返回的一個新陣列,類似於String中substring

4、push(),pop()尾部

push:壓入到尾部
pop:彈出尾部的一個元素

5、unshift(),shift() 頭部

unshift:壓入到頭部
shift:彈出頭部的一個元素

6、排序sort()

(3)["B","C","A"]
arr.sort()
(3)["A","B","C"]

7、元素反轉reverse()

(3)["A","B","C"]
arr.reverse()
(3)["C","B","A"]

8、concat()

注意:concat()並沒有修改陣列,只是會返回一個新的陣列

9、連線符join

列印拼接陣列,使用特定的字串連線

10、多維陣列

陣列:儲存資料(如何存,如何取,方法都可以自己實現!)

3.3、物件

若干個鍵值對

var 物件名 = {
	屬性名:屬性值,
	屬性名:屬性值,
	屬性名:屬性值
}
//定義了一個person物件,它有四個屬性
var person = {
	name:"Tom",
	age:3,
	email:"[email protected]",
	score:66
}

Js中物件,{…}表示一個物件,建制對描述屬性xxx:xxx,多個屬性之間用逗號隔開,最後一個屬性不加逗號!
JavaScript中的所有的鍵都是字串,值是任意物件!

1、物件賦值

2、使用一個不存在的物件屬性,不會報錯!undefined

3、動態的刪減屬性,通過delete刪除物件的屬性

4、動態的新增,直接給新的屬性新增值即可

5、判斷屬性值是否在這個物件中!xxx in xxx

6、判斷一個屬性是否是這個物件自身擁有的 hasOwnProperty()

3.4、流程控制

if判斷

while迴圈,避免程式死迴圈

for迴圈

forEach迴圈

ES5.1特性

for …in-------下標

3.5、Map和Set

ES6的新特性~

Map

Set:無序不重複的集合

3.6、iterator

es6新特性

作業:使用iterator來遍歷迭代我們Map,Set!

遍歷陣列

遍歷Map

遍歷set

4、函式

4.1、定義函式

定義方式一

絕對值函式

一旦執行到return代表函式結束,返回結果!
如果沒有執行return,函式執行完也會返回結果,結果就是undefined

定義方式二

function(x){…}這是一個匿名函式。但是可以吧結果賦值給abs,通過abs就可以呼叫函式!
方式一和方式二等價!

呼叫函式

abs(10)//10
abs(-10) //10

引數問題:javaScript可以傳任意個引數,也可以不傳遞引數~
引數進來是否存在問題?
假設不存在引數,如何規避?

arguments

arguments是一個JS免費贈送的關鍵字;
代表,傳遞進來的所有引數,是一個數組!

問題:arguments包含所有的引數,我們有時候想使用多餘的引數來進行附加操作。需要排除已有引數~

rest

以前:

ES6引入的新特性,獲取除了已經定義的引數之外的所有引數~…

rest引數只能寫在最後面,必須用…標識。

4.2、變數的作用域

在javascript中,var定義變數實際是有作用於的。
假設在函式體重宣告,則在函式體外不可以使用~(閉包)

如果兩個函式使用了相同的變數名,只要在函式內部就不衝突

內部函式可以訪問外部函式的成員,反之則不行

假設,內部函式變數和外部函式變數,重名!

假設在JavaScript中,函式查詢變數從自身函式開始~, 由“內”向“外”查詢,假設外部存在這個同名的函式變數,則內部函式會遮蔽外部函式的變數。

提升變數的作用域

結果:x undefined
說明:js執行引擎,自動提升了y的宣告,但是不會提升變數y的賦值;

這個是在javascript建立之初就存在的特性。 養成規範:所有 的變數定義都放在函式的頭部,不要亂放,便於程式碼維護;

全域性變數

全域性物件window

alert() 這個函式本身也是一個window的變數;

javascript實際上只有一個全域性作用域,任何變數(函式也可以視為變數),假設沒有在函式作用範圍內找到,就會向外查詢,如果在全域性作用域都沒有找到,就會報錯 Refrence

規範

由於我們的所有變數都會繫結到window上,。如果不同的js檔案,使用了相同的全域性變數,就會產生衝突—>如何減少這樣的衝突?

把自己的程式碼全部放入自己定義的唯一空間名字中,降低全域性命名衝突問題~
jQuery中就是使用的該方法:jQuery.name,簡便寫法:$()

區域性作用域

ES6的let關鍵字,解決了區域性作用域衝突的問題!

建議大家都用let去定義區域性作用域的變數;

常量

在ES6之前,怎麼定義常量:只有用全部大寫字母命名的變數就是常量;建議不要修改這樣的值。

在ES6引入了常量關鍵字 const

4.3、方法

定義方法

方法就是把函式放在物件的裡面,物件只有兩個東西:屬性和方法

this.代表什麼?拆開上main的程式碼看看

this是無法指向的,是預設指向呼叫它的那個物件的;

apply

在js中可以控制this指向

5、內部物件

標準物件

5.1、Date

基本使用

轉換

5.2、JSON

JSON是什麼


在javascript中,一切皆為物件,任何js支援的型別都可以用JSON表示
格式

  • 物件都用{}
  • 陣列都用[]
  • 所有的鍵值對 都是用key:value

JSON字串和js物件轉化

很多人搞不清楚,JSON和JS物件的區別

5.3、AJAX

  • 原生的js寫法 xhr非同步請求
  • jQuery封裝好的方法$(#name).ajax("")
  • axios請求

6、面向物件程式設計

6.1、原型物件

javascript、java、c#------面向物件;但是javascript有些區別!

  • 類:模板
  • 物件:具體例項

在javascript中,需要大家轉換一下思維方式!
原型:

6.2、class集繼承

class關鍵字,是在ES6引入的
1、定義一個類、屬性、方法

2、繼承

<script>
	//ES6之後========================
	//定義一個學生的類
	class Student{
		constructor(name){
			this.name = name;
		}
		hello(){
			alert('hello');
		}
}

	class XiaoStudent extends Student{
		constructor(name,grade){
			super(name);
			this.grade = grade;
		}
		myGrade(){
			alert('我是一名小學生');
		}
	}

	var xiaoming = new Student("xiaoming");
	var xiaohong = new XiaoStudent("xiaohong",1);
</script>

本質:檢視物件原型

6.3、原型鏈

proto:

7、操作BOM物件(重點)

7.1、瀏覽器介紹

javascript和瀏覽器關係?
BOM:瀏覽器物件模型

  • IE6~11
  • Chrome
  • Safari
  • FireFox
  • Opera

三方

  • QQ瀏覽器
  • 360瀏覽器

7.2、window

window代表瀏覽器視窗

7.3、Navigator(不建議使用)

Navigator封裝了瀏覽器的資訊

大多數時候,我們不會使用navigator物件,因為會被認為修改!
不建議使用這些屬性來判斷和編寫程式碼

7.4、screen

代表螢幕尺寸

7.5、location(重要)

location代表當前頁面的URL資訊

7.6、document(內容DOM)

document代表當前的頁面,HTML DOM文件樹

獲取具體的文件樹節點

獲取cookie

劫持cookie原理
www.taobao.com

伺服器端可以設定cookie為httpOnly

7.7、history(不建議使用 )

history代表瀏覽器的歷史記錄

8、操作DOM物件(重點)

DOM:文件物件模型

8.1、核心

瀏覽器網頁就是一個Dom樹形結構!

  • 更新:更新Dom節點
  • 遍歷Dom節點:得到Dom節點
  • 刪除:刪除一個Dom節點
  • 新增:新增一個新的節點

要操作一個Dom節點,就必須要先獲得這個Dom節點
這是原生程式碼,之後我們儘量都使用jQuery();

8.2、更新節點

操作文字

操作css

8.3、刪除節點

刪除節點的步驟:先獲取父節點,再通過父節點刪除自己

注意:刪除多個節點的時候,children是在時刻變化的,刪除節點的時候一定要注意。

8.4、插入節點

我們獲得了某個Dom節點,假設這個dom節點是空的,我們通過innerHTML就可以增加一個元素了,但是這個Dom節點已經存在元素了,我們就不能這麼幹了!會產生覆蓋

追加

8.5、建立一個新的標籤

<script>
	var js = document.getElementById('js');//已經存在的節點
    var list = document.getElementById('list');
    //通過JS建立一個新的節點
    var newP = document.creatElement('p');//建立一個p標籤
    newP.id = 'newP';
    newP.innerText = 'Hello,Kuangshen';
    //建立一個標籤節點
    var myScript = document.creatElement('script');
    myScript.setAttribute('type','text/javascript');
    
    //可以建立一個style標籤
    var myStyle = document.creatElement('style');//建立了一個空style標籤
    myStyle.setAttribute('type','text/css');
    myStyle.innerHTML = 'body{background-color:chartreuse;}';//設定標籤內容
    
    document.getElementByTagName('head')[0].appendChild(myStyle);
</script>

insertBefore

var ee = document.getElementById('ee');
var js = document.getElementById('js');
var list = document.getElementById('list');
//要包含的節點.insertBefore(newNode,targetNode)
list.insertBefore(js,ee);

9、操作表單

9.1、表單是什麼?form-----DOM樹

  • 文字框----text
  • 下拉框----select
  • 單選框----radio
  • 多選框----checkbox
  • 隱藏域----hidden
  • 密碼框----password

表單的目的提交資訊

9.2、獲得要提交的資訊

<body>
    <form action = "post">
        <p>
            <span>使用者名稱:</span><input type="text" id = "username" />
        </p>
        <!--多選框的值就是定義好的value-->
        <p>
            <span>性別:</span>
            <input type = "radio" name = "sex" value = "man" id = "boy"/>男
           	<input type = "radio" name = "sex" value = "woman" id = "girl"/>女
        </p>
    </form>
    <script>
    	var input_text = document.getElementById("username");
        var boy_radio = document.getElementById("boy");
        var girl_radio = document.getElementById("girl");
        //得到輸入框的值
        input_text.value 
        //修改輸入框的值
        input_text.value  = "value";
        
        //對於單選框,多選框等等固定的值,boy_radio.value只能取到當前的值
        boy_radio.checked;//檢視返回的結果,是否為true,如果為true,則被選中。
        girl_radio.checked = true;//賦值
        
    </script>
</body>

9.3、提交表單。md5加密密碼,表單優化

<!DOCTYPE html>
<html lang = "en">
    <head>
        <meta charset = "UTF-8">
        <title>Title</title>
        <!--MD5加密工具類-->
        <script src = "https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js">
        	
        </script>
    </head>
    <body>
        <!--表達繫結提交事件
			οnsubmit= 繫結一個提交檢測的函式,true,false
			將這個結果返回給表單,使用onsubmit接收
		-->
        <form action = "https://www.baidu.com" method = "post" onsubmit = "return aaa()">
            <p>
            	<span>使用者名稱:</span><input type="text" id = "username" name = "username"/>
        	</p>
            <p>
            	<span>密碼:</span><input type="password" id = "password" />
        	</p>
            <input type = "hidden" id = "md5-password" name = "password"> 
            
            <!--繫結事件 onclick 被點選-->
            <button type = "submit">提交</button>
            
        </form>
        
        <script>
        	function aaa(){
                alert(1);
                var username = document.getElementById("username");
                var pwd = document.getElementById("password");
                var md5pwd = document.getElementById("md5-password");
                //pwd.value = md5(pwd,value);
                md5pwd.value = mad5(pwd.value);
                //可以校驗判斷表單內容,true就是通過提交,false就是阻止提交
                return false;
                
            }
        </script>
        
    </body>
</html>

10、jQuery

javaScript和jQuery的關係?

jQuery庫,裡面存在大量的JavaScript函式

10.1、獲取jQuery

公式:$(selector).action()

<!DOCTYPE html>
<html lang = "en">
    <head>
        <meta charset = "UTF-8">
        <title>Title</title>
        <script src="lib/jquery-3.4.1.js"></script>
    </head>
    <body>
        <a href="" id = "test-jquery">點我</a>
        <script>
        	//選擇器就是css選擇器
            $('#test-jquery').click(function(){
                alert('hello,jQuery!');
            });
        </script>
    </body>
</html>

10.2、選擇器

//原生js,選擇器少,麻煩不好記
//標籤
document.getElementByTagName();
//id
document.getElementById();
//class
document.getElementByClassName();

//jQuery css中的選擇器它全部都能用!
$('p').click();//標籤選擇器
$('#id1').click();//id選擇器
$('.class1').click;//class選擇器

文件工具站:http://jquery.cuishifeng.cn/

10.3、事件

滑鼠事件、鍵盤事件,其他事件

mousedown()(jQuery)----按下
mouseenter()(jQuery)
mouseleave()(jQuery)
mousemove()(jQuery)----移動
mouseout()(jQuery)
mouseover()(jQuery)
mouseup()(jQuery)
1234567
<!DOCTYPE html>
<html lang = "en">
    <head>
        <meta charset = "UTF-8">
        <title>Title</title>
        <script src="lib/jquery-3.4.1.js"></script>
        <style>
            #divMove{
                width:500px;
                height:500px;
                border:1px solid red;
            }
        </style>
    </head>
    <body>
        <!--要求:獲取滑鼠當前的一個座標-->
        mouse:<span id = "mouseMove"></span>
        <div id = "divMove">
            在這裡移動滑鼠試試
        </div>
        <script>
        	//當網頁元素載入完畢之後,響應事件
            //$(document).ready(function(){})
            $(function(){
                $('#divMove').mousemove(function(e){
                    $('#mouseMove').text('x:'+e.pageX+"y:"+e.pageY)
                })
            });
        </script>
    </body>
</html>

10.4、操作DOM

節點文字操作

$('#test-ul li[name=python]').text();//獲得值
$('#test-ul li[name=python]').text('設定值');//設定值
$('#test-ul').html();//獲得值
$('#test-ul').html('<strong>123</strong>');//設定值

CSS的操作

$('#test-ul li[name=python]').css({"color","red"});

元素的顯示和隱藏,:本質display:none

$('#test-ul li[name=python]').show();
$('#test-ul li[name=python]').hide();

娛樂測試

$(window).width()
$(window).height()
$('#test-ul li[name=python]').toggle();

未來ajax();

$('#form').ajax()

$.ajax({url:"test.html",context:document.body,success:function(){
	$(this).addClass("done");
}})

10.5、小技巧

1、如何鞏固JS(看jQuery原始碼,看遊戲原始碼!)

2、鞏固HTML、CSS(扒網站,全部down下來,然後對應修改看效果~)

10.6、相關網站推薦

jQuery文件工具站:http://jquery.cuishifeng.cn/

原始碼之家 https://demo.mycodes.net/youxi/JS_dazhuankuai/

Layui 彈窗元件 https://www.layui.com/demo/button.html

Element-ui https://element.eleme.cn/#/zh-CN/component/button

Ant Design https://ant.design/docs/react/introduce-cn

友人C(部落格模板) https://www.ihewro.com/