JavaScript學習筆記(6月份)

来源:https://www.cnblogs.com/SupHumer/archive/2019/07/07/11147553.html
-Advertisement-
Play Games

由於筆記比較雜,本身學習程度並不理想,所以暫時沒有整理這些繁雜的筆記。 ps:博客園markdown用起來和看起來都舒服太多了,這才是我瞭解的那個markdown,又回來了! 筆記 DOM對象 document object model DOM 中節點種類一共有三種 註:在JS中所有的節點都是對象 ...


由於筆記比較雜,本身學習程度並不理想,所以暫時沒有整理這些繁雜的筆記。
ps:博客園markdown用起來和看起來都舒服太多了,這才是我瞭解的那個markdown,又回來了!

筆記

DOM對象 document object model

DOM 中節點種類一共有三種

註:在JS中所有的節點都是對象
<div title="屬性節點">文本內容</div>

<div></div> => 元素節點 
title => 屬性節點
文本內容 => 文本節點

查找元素節點方法

  1. document.getElementById(id);//通過當前元素節點的id,獲取對應元素節點
  • 元素節點對象:
    通過這個節點對象(note),訪問它的一系列屬性,以下就是對象名稱:
    1. note.tagname 獲取元素節點的標簽名
    2. note.innerHTML 獲取元素節點標簽間的內容
    3. note.id
    4. note.className
    5. note.title
    6. note.style等
  • HTML屬性的屬性(對應元素節點的對象):
    id  
    title  
    style  
    innerHTML  
    className
    元素節點.屬性
    元素節點[屬性]
    document.getElementsByTagName()
    node.getElementsByTagName();
  • 從node節點開始,找出符合的標簽節點
    參數:標簽名;
    功能:獲取當前頁面上所有符合改標簽的元素節點
    返回值:一個裝有符合條件的元素節點的數組

  • document.getElementsByName(); 只能從document調用 ps:許多的name可以一樣
    參數:name的值
    返回值:裝有符合條件的元素節點的數組

  • document.getElementsByClassName() ps:可以從某一個元素節點去查找
    參數:class
    返回值:所有符合條件的元素節點組合的數組。
    在第版本的ie瀏覽器中是不支持的 處理辦法
    獲取父節點的所有元素,然後進行一一判斷,符合className等於參數class就可以加入數組中。

封裝函數·setAttribute·childNotes·Attributes·parentNode

  • id document.getElementById()
  • class document.getElementsByClassName();
  • name document.getElementsByName();
  • tagName note.getElementsByTagName();

通過封裝函數,簡化上述操作。

css選擇器

  • #id //通過id獲取元素節點
  • .class //通過className獲取元素節點
  • tagName //通過tagName獲取元素節點
  • name=xxx //通過name獲取元素節點

詳情看$()方法 //通過封裝css選擇器的方法,來快速的獲取對應的標簽

作用:操作當前元素的某一個屬性的

get/setAttribute() 獲取元素屬性的兩種方法

removeAttribute()

  1. 和點出來的class屬性範圍區別:點操作是通過元素節點點出className參數,
    而set/get是通過傳入class參數來獲取 例如:Obtn.className == Obtn.getAttribute("class")
  2. 用戶自定義屬性的支持。自定義xxx="yyyy" Obtn.setAttribute("xxx","yyy")
    document.getElementsById("btn").getAttribute("id")

childNotes(); 獲取當前節點的所有子節點,包括三種節點類型 nodeName,nodeType,nodeValue

DOM節點類型
元素節點 屬性節點 文本節點
作用:
(1)刪除子節點中的空白節點
方法:使用正則表達式進行刪除。/^\s+$/.test() 判斷是否value為空
刪除空白節點的時候必須是倒序刪除,原因自己想,想不到撞死,提示:他是一個數組類型

(2)不知道

ownerDocument 結果一般是document
parentNode 父親節點 previousSibling 同級別的上一個節點 nextSibling 同級別的下一個元素節點

attributes 返回該節點的屬性節點,[集合]
集合特點:1.不重覆;2.無序
其中一種訪問方法:node.attributes.getNamedItem("id");

dom創建帶文本的元素節點

  • document.write() //寫入
  • document.createElement("div") 插入標簽
  • note.appendChild()
  • parent.replaceChild(newNode,oldNode)
  • note.cloneNode() 參數:true則將文本內容傳入,否則預設只克隆標簽
    ps:系統沒有提供同時插入文本和標簽的方法
    var note = document.createElement("span")
    var Ntext = document.createTextNode("文本內容") 插入文本內容
    note.appendChild(Ntext)
    odiv.appendChild(note)

事件

1. 事件基礎

訪問web界面的用戶引起的一系列操作
滑鼠事件,鍵盤事件,HTML事件
函數:on+事件名稱

2. 事件流

事件:捕獲,目標,冒泡
阻止冒泡:

    evt.cancelBubble = true //對主流瀏覽器和ie生效
    evt.stopPropagation() //只對主流瀏覽器生效

事件委托:利用事件冒泡原理,把本應添加在元素上的事件委托給他的父級(外層)
多個重覆的事件,可以把這個事件委托到父級來實現。更加簡潔

阻止預設事件
比如<a></a>href跳轉標簽

  1. onclick 方法裡面,return false
  2. evt.preventDefault();
  3. evt.returnValue = false;

3. DOM2級事件

DOM2級事件處理程式
添加事件監聽器:addEventListener(事件名,處理函數,布爾值)
移除事件監聽器:removeEventListener(事件名,處理函數)
IE下的事件監聽器:attachEvent(事件名,處理函數) detachEvent(事件名,處理函數)

ps:普通事件中點擊事件會被後一個點擊事件給覆蓋,而二級事件不會被其他事件所覆蓋。可以重覆添加
布爾值為false的時候,為正常的冒泡事件,true為捕獲(從外往內)

  • http協議
  • cookie的概念
  • cookie的基本操作
  • cookie的封裝

http:超文本傳輸協議,用於從web伺服器傳輸超文本到本地瀏覽器的傳輸協議,是一個無狀態的協議
cookie:緩存存在本地瀏覽器中的數據,包括增刪改查的四個部分

document.cookie = "userName=paikle";
//這種方式添加的cookie會隨著瀏覽器的關閉而消失,要設置時間限制的cookie需要在後面添加date限制

設置時間來讓cookie過期,從而達到刪除的效果。

var oDate = new Date(); //創建時間
oDate.setDate(oDate.getDate()+3) //將時間設置為三天之後
document.cookie = "user = paikle;expires="+oDate; //將cookie過期時間設置為三天後

cookie的封裝

setcookie(name,value,day) //設置cookie
getcookie() //獲取cookie
removecookie() //移除cookie

正則表達式

正則表達式是由普通字元和特殊字元組成的對字元串進行過濾的邏輯公式

修飾符 g i

g 表示會全部搜索,返回符合的數字,i 表示忽略大小寫

 var reg = /abc/g;
 var str = 'abcabc';

1.test方法

正則表達式方法,檢測字元串是否又符合規則的字串,有返回true,無為false

//兩種構造方法
var rge = /abc/;
var reg = new RegExp("abc");

var str = "ab";

var flag = reg.test(str)

2.match方法 字元串方法

console.log(str.match(reg))

3.search方法 字元串的方法 用於查找符合規則的字串的位置,只返回第一個匹配的位置

var rg = /bc/
console.log(str.search(rg))

4.split方法

5.replace方法

var tmd = /tmd/gi
var str = "abc tmd tmd TMd sabi";
console.log(str.replace(tmd,"*"));

6.exec 正則表達式的方法 將匹配成功的內容放到數組內,沒有匹配成功返回null

和match差不多的用法,不過在配置全局匹配的時候不能一次出來

符號 效果
. 除了換行符之外的所有單個字元
var rag = /g..gle/gi;var str = 'googlegole';console.log(rag.test(str))
* 重覆多次匹配,匹配任意次數 不管中間多少次(0-n)
+ 至少有一次重覆匹配
? 進行0或者1次匹配
[] 一個字母表示可出現的範圍,[0-9] [a-z]
\w 數組字母下劃線等同於[0-9a-zA-Z_]
\W 非數字字母下劃線
\d 數字0-9
\D 非數字
\s 匹配空格 \S 非空格
{m,n} 至少匹配m次,至多匹配n次
/^開頭.*結尾&/
| 或 /a
() 分組 將內容作為一個整體去匹配

ES6

  • let的使用
  • 解構賦值
  • 模板字元串
  • 箭頭函數
  • set結構和map結構
  • 生成器函數
  • 類class

1.let的使用

用來聲明變數。用法類似於var ,但是所聲明的變數,只在let命令所在的代碼塊有效。
存在塊級作用域 {}
不存在聲明提升
不允許重覆聲明(包括普通變數和函數參數)
const使用 用來聲明常量,不要試圖改變常量的值,其他語法參照let

2.解構賦值

    //預設賦值
    let [a,b,c] = [1,2,3]
    [a,b=2] = [3] // a = 3,b = 2
    let c ; //undifined;
    [a=1] = [c] //a = 1
    //對象
    let {a,b} = {a:'100',b:'200'} // a = 100 , b = 200
    let {a:b} = {a:111} // b = 111;
    let {a,b = 4} = {a:1} //a = 1;b = 4

3.箭頭函數

  1. 只有一個表達式
  2. 含有多條語句
  3. this的指向問題
    在箭頭函數內的this指向定義時的作用域,而不是執行時的作用域。
var name = "作用域1"
    var obj = {
        'name':'jonson',
        'syHello':()=>{
            this.name;//this指向定義的作用域,則返回:作用域1
        }
    }
//ps
var obj = {
    'name':"joson",
    "syHello":function(){
        this.name;//joson
    }
}

3.set結構 & map結構

set

set的值是不能重覆的,相當於集合
var set = new Set([1,3,2,2,34,1,3])
var arr = [...set] 擴展運算符,將類數組對象轉換以逗號分割的序列,set轉換為數組的方式
arr 為數組形式
使用for of 遍歷set or 數組

for(let et of set){ //et直接代表元素
    console.log(et)
}

set.size 長度 set.add() 添加一個 set.delete() 刪除某一個 set.has() 是否包含某一個 set.clear() 清空
keys() 返回鍵名
values() 返回鍵值
entries() 返回鍵值對

forEach()

map

let map = new Map([['name':'john'],['age':'30']])
map.set(key,value) 添加元素
map.set(key,value) map.get(key) map.delete() map.has(key) map.clear();

keys() 返回鍵名
values() 返回鍵值
entries() 返回鍵值對
forEach() map.forEarch((value,key) => console.log(value*2))

4.生成器函數

5.class

    class Person{
        constructor(name){
            this.name = name;
        }
    }

JS動畫 (7.1記)


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

-Advertisement-
Play Games
更多相關文章
  • 利用mapWithState運算元實現有狀態的wordCount,且按照word的第一個字母為key,但是要求輸出的格式為(word,1)這樣形式的結果 ...
  • SQL的函數 函數就是將我們經常使用的代碼封裝起來, 需要的時候直接調用, 提高代碼效率和可維護性. SQL函數一般是在數據上執行, 可以方便地轉換和處理數據. 常用的SQL函數 SQL提供了一些常用的內置函數, 也可以自定義, 內置的函數分為四類: 算數函數 字元串函數 日期函數 轉換函數 算數函 ...
  • 大數據常用技術棧一覽 —— GitHub 地址:https://github.com/heibaiying/BigData Notes ,主要技術棧如下: :black_nib: 前 言 1. "大數據常用技術棧思維導圖" 2. "大數據常用軟體安裝指南" 一、Hadoop 1. "分散式文件存儲系 ...
  • CSS允許根據鏈接的當前狀態對它們進行格式化。鏈接的狀態包括訪問者是否將滑鼠停留在鏈接上,鏈接是否被訪問過 ,等等。可以通過一系列偽類實現這一特性。 a:link 設置從未被激活或指向,當前也沒有被激活或指向的鏈接的外觀。 1 a:link {color: red;} 新的、未訪問的鏈接顯示為紅色。 ...
  • 如果已經在元素中標識了class或id,就可以在選擇器中使用這個標準,從而只對已標識的元素進行格式化。不過推薦使用類選擇器,一會兒我會解釋理由。 要在class選擇器和id選擇器之間作出選擇的時候,建議儘可能地使用class選擇器。這主要是因為我們可以復用class選擇器。有人提議完全不使用id選擇 ...
  • 什麼是 canvas 按例是要介紹一下 canvas 的,在沒有 canvas 之前,我們為了網頁的效果,很多情況下是使用了圖片來實現,不過用圖片就需要載入,而且圖片的體積也是一個問題,所以在 html5 的規範里新增了一個 canvas 元素(畫布) 那麼其實在 html5 中有兩個 2d 圖形技 ...
  • 整理 Kindle 標註、書簽和筆記從未如此簡單! Kindle 標註管理應用 "Kindle Mate" 只支持 Windows,不支持 Mac。標註只是解析 我的剪貼 文本文件,配合 "FileReader" API,寫個 Chrome 擴展解析文本文件就好了。 <! more "Chrome ...
  • 使用new關鍵字調用函數 test.js 代碼如下 function Person(name, age, obj) { var o = new Object(); o.name = name; o.age=age; o.obj=obj; o.sayName=function(){ alert(thi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...