原生的DOM操作

2021-10-22 18:47:27 字數 1868 閱讀 4537

虛擬dom就是用物件的方式區代真實的dom操作。

當頁面開啟時瀏覽器解析html元素,構建乙個dom樹,將狀態儲存起來,在記憶體中模擬dom操作,又會生成乙個dom樹,兩個進行比較,根據diff演算法找出不同的地方,之渲染一次不同的地方

diff演算法:就是進行虛擬節點對比,並返回乙個patch物件,用來儲存兩個節點不同的地方,最後用patch記錄的訊息去區域性更新dom

window的作用:在封閉空間中宣告乙個全域性的變數

全域性變數和函式都屬於window

由什麼東西組成?

ecmascript 核心直譯器(es5和es6)

dom bom

提供最基本的功能比如:12+5 var a = 12; function show(){}

相容性:完全相容。

就是document 操作頁面的。

獲取元素,修改樣式,建立元素

相容性:很好,有不相容的,但是可以解決。

dom樹 頁面結構關係

獲取子節點

oele.children

只能獲取一層

獲取父節點

oele.parentnode

獲取結構父級

oele.offsetparent

獲取定位父級

獲取兄弟節點

獲取上乙個兄弟節點

oele.previouselementsibling

獲取下乙個兄弟節點

oele.nextelementsibling

注意:不相容低版本ie瀏覽器

獲取首尾子節點

首子節點

aele[0]

oprent.firstelementchild

尾子節點

aele[aele.length-1]

oprent.lastelementchild

獲取標籤名

oele.tagname

建立

document.createelement(『標籤名』);

插入

父級.removechild(要刪的元素);

onmousedown             滑鼠按下

獲取滑鼠在div中的位置

var disx = ev.pagex-odiv.offsetleft

var disy = ev.pagey-odiv.offsettop

onmousemove 滑鼠移動

改變div的left和top

odiv.style.left = ev.pagex-disx+'px';

odiv.style.top = ev.pagey-disy+'px';

onmouseup 滑鼠抬起

把onmousemove乾掉

把onmouseup乾掉

問題一:

滑鼠沒點就懂了

解決:把onmousemove放在onmousedown裡面

問題二:

滑鼠移動過快,就移出div了

解決:1.把div放大 不靠譜,設計和產品會找你拼命

以下方法靠譜

把onmousemove事件加給document

問題三:

滑鼠抬起依然能動

解決:正在onmouseup中把onmousemove乾掉

問題四:

滑鼠拖拽的時候,會選中頁面內容

解決:在onmousedown中把預設事件阻止

return false; 注意一定要放在最後

原生DOM 操作

dom.nodetype 檢視元素節點型別 dom.childnodes 檢視所有元素下面的所有子節點 空白節點也會獲取到 dom.children 檢視所有元素下面的所有子節點 只獲取元素節點 dom.firstchild 獲取第乙個子節點 dom.lastchild 獲取最後乙個子節點 dom....

js原生dom操作

1.建立元素 var a document.createelement a var node1 document.createelement div var node2 document.createtextnode hello world 2.新增子元素 刪除子元素 document.body.r...

原生DOM操作彙總

節點型別attr document element text 其他 節點之間的關係父節點 parentnode 子節點 childnodes 前乙個兄弟節點 nextsibling 後乙個兄弟節點 previoussibling 第乙個子節點 firstchild 最後乙個子節點 lastchild...