Javascript:節點的操作與Style、事件
javaScript操作節點(Element)
firstElementChild跟firstChild的區別在於,有Element代表元素,firstElementChild是元素選擇器,非元素他是不會選擇到的,如文字節點之類的。而firstChild是所有都選擇所有節點,包括文字。
注意:IE8以上的不支援元素選擇器。
一、常用方法:
元素物件.parentNode 返回節點的父節點
元素物件.childNodes 返回節點的子節點集合
元素物件.firstchild 獲得第一個子節點
元素物件.lastchild 獲得最後一個子節點
元素物件.previousSlibing 獲取上一個節點的內容
元素物件.nextsSlibing 獲取下一個節點的內容
元素物件.childNodes 獲取所有子節點的集合
.firstchild .lastchild 注:一般不用這兩個方法來獲取物件的子節點,因為無論是空格還是換行都會被計算到物件的節點中,所以獲取到的即使是文字節點也算一個節點。
二、一般我們使用獲取節點的方法,一般是獲取它的元素節點,方法為
元素物件
元素物件.lastElementChild
元素物件.previousSlibing
元素物件.nextSlibing
三、建立,新增,替換,刪除 節點
1.建立一個新的節點
var element = document.creatElement( "標籤型別" )
2.將B標籤新增到A標籤的子節點裡,成為子節點
A.appendChild( B )
3.刪除一個節點(首先呼叫它的父節點,然後通過父節點來刪除該節點)
元素物件.parentNode.removeChild( node )
4.替換一個節點(首先也是呼叫它的父節點,然後通過父節點來替換該節點)
例項程式碼:
建立:
<input type="button" onclick="book()" value="確定"> <div></div> <script type="text/javascript"> function book() { //獲取div容器 var tv_div= document.getElementsByTagName("div")[0]; //建立節點 var tv_img= document.createElement("img"); //賦值 tv_img.setAttribute("src","../images/logo.png"); tv_img.setAttribute("alt","圖片無法顯示"); //追加 tv_div.appendChild(tv_img); } 刪除和替換
<input type="button" value="刪除" onclick="del()" > <img src="../images/logo.png" id="first"> <input type="button" value="更換圖片" onclick="update()" > <img src="../images/logo.png" id="two"> <script type="text/javascript"> //刪除節點 function del() { var first=document.getElementById("first"); first.parentNode.removeChild(first); } //替換節點 function update() { var old_img=document.getElementById("two"); /* old_img.setAttribute("src","../images/login-icons.png")*/ //建立一個新節點 var new_img=document.createElement("img"); new_img.setAttribute("src","../images/dd_logo.jpg"); //替換 old_img.parentNode.replaceChild(new_img,old_img); } </script>
四、獲得節點的nodeName,nodeValue,nodeType
1.節點的型別nodeType
元素節點 element返回值1
屬性節點 attr返回值2
文字節點 text返回值3
註釋節點 comments 返回值8
文件 document 返回值9
這個可以通過節點型別(nodeType)來獲取,後期一般用這個來判斷該物件是什麼型別
2.nodeVlue 節點值 對文字節點有用,假如我們需要獲得一個文字節點,可以他通過child方法來獲取陣列,跟據文字節點的下標用nodeVlue的方法來獲取這個文字資訊,同時nodeVlue對元素節點沒用,都會返回null
3.nodeName 返回元素的標籤名,以大寫形式表示
nodeName 屬性指定節點的節點名稱。
如果節點是元素節點,則 nodeName 屬性返回標籤名。
如果節點是屬性節點,則 nodeName 屬性返回屬性的名稱。
文字節點就返回#text,元素節點就返回該元素標籤的大寫名稱如 (SCRIPT P)
nodeType 該節點的型別,返回的會根據不同型別返回不同的數值(數值在上面有寫)
五、操作節點的屬性
元素物件.getAttribute(" 屬性名 ") 獲取節點的屬性資訊
元素物件.setAttribute( "屬性名 " ,”屬性值“) 設定節點的屬性資訊
六、操作節點的樣式
通過ID獲得該節點並設定其樣式的方法
document.getElementById(“tv_div" ) . style="blackground-color : red ”;
通過點style 的方法直接給它 新增 樣式型別
document.getElementById(“tv_div" ). classNode="樣式名稱";
也可以直接新增class樣式,輸入class樣式名,就能將當前的樣式覆蓋原來的class樣式,請注意,是覆蓋,不是新增
獲取元素的樣式
alert ( document.getElementById( " tv_div" ).style.display )
不相容ie的話,就用下面的方法
alert ( document.getElementById( " tv_div" ).currentstyle.display )
例項程式碼:
設定樣式:
<div id="tv_div"> 當前字型樣式 </div> <input type="button" value="確" onclick="showStyle()"> <script type="text/javascript"> function showStyle() { var tv_div=document.getElementById("tv_div"); tv_div.style.color="red"; tv_div.style.fontSize="80px"; tv_div.style.fontStyle="italic"; tv_div.style.fontFamily="微軟雅黑" } </script> 獲取樣式:
<div id="one_div" style="font-size: 80px;background-color: #0000FF;color: red;">加油</div> <script type="text/javascript"> alert(document.getElementById("one_div").style.color) alert(document.getElementById("one_div").style.backgroundColor) alert(document.getElementById("one_div").style.fontSize) </script>更改樣式:
<script type="text/javascript"> //移入滑鼠 function over() { document.getElementById("cartList").className="cartOver"; document.getElementById("cartList").className="cartListOver"; } function out() { //移除滑鼠 document.getElementById("cartList").className="cartOut"; document.getElementById("cartList").className="cartListOut"; } </script>
七、觸發事件型別
onclick 點選觸發
onmouseover 當滑鼠移到某元素之上
onmouseout 當滑鼠從某元素移開
onmousedown 滑鼠按鈕被按下
---------------------------------------------------------------------
1,方法,div.parentNode 返回節點的父節
div.childNodes 返回節點的子節點集合
div.firstchild 獲得第一個子節點
div.lastchild 獲得最後一個子節點
div.previousSlibing 獲取上一個節點的內容
div.nextsSlibing 獲取下一個節點的內容
div.childNodes 獲取所有子節點的集合
div.firstchild 獲得第一個子節點 div.lastchild 獲得最後一個子節點
注:一般不用這兩個方法來獲取物件的子節點,因為無論是空格還是換行都會被計算到物件的節點中,多以獲取到的即使是文字節點也算一個節點,
2一般我們使用獲取節點的方法,一般是獲取它的元素節點,方法為
div.firstElementChild
div.lastElementChild
div.previousSlibing
div.nextSlibing
他只會獲取物件子節點中的元素節點
3建立,新增,替換,刪除
建立一個新的節點
var element = document.creatElement( "標籤型別" )
將B標籤新增到A標籤的子節點集合的
A.appendChild( B )
刪除一個節點(首先呼叫它的父節點,然後通過父節點來刪除該節點)
div.parentNode.removeChild( node )
替換一個節點(首先也是呼叫它的父節點,然後通過父節點來替換該節點)
div.parentNode.replaceChild( newnode, oldnode)
4獲得節點的nodeName,nodeValue,nodeType
nodeType根據型別不同就返回
1==元素element,
2==屬性attr,
3==文字text,
8==註釋comments,
9==文件document
注:這些返回的數字我們可以配套 i f 判斷來進行別的操作
nodeVlue對文字節點有用,假如我們需要獲得一個文字節點,可以他通過child方法來獲取陣列,跟據文字節點的下標用nodeVlue的方法來獲取這個文字資訊,同時nodeVlue對元素節點沒用,都會返回null
nodeName會返回對應節點的name資訊,假如是
文字節點就返回#text
元素節點就返回該元素標籤的大寫名稱如 (SCRIPT UL LI.....)
5操作節點的屬性
相關推薦
Javascript:節點的操作與Style、事件
javaScript操作節點(Element)firstElementChild跟firstChild的區別在於,有Element代表元素,firstElementChild是元素選擇器,非元素他是不會選擇到的,如文字節點之類的。而firstCh
【PYTHON模塊】:協程與greenlet、gevent
left imp test bind lse 調用 編程模型 send 地址 協程:又稱為微線程,英文名稱Coroutine。作用:它擁有自己的寄存器上下文和棧,能保留上一次調用時的狀態,可以隨時暫停程序,隨時切換回來。優點: ?無需線程上下文切換的開銷 ?無需
zookeeper(四):核心原理(Watcher、事件和狀態)
ted sso 兩個 reat exist 這一 通過 投票 children zookeeper主要是為了統一分布式系統中各個節點的工作狀態,在資源沖突的情況下協調提供節點資源搶占,提供給每個節點了解整個集群所處狀態的途徑。這一切的實現都依賴於zookeeper中的事件監
第五章:節點重要性與相似性
最大的 一次 思想 我們 核心 網絡 隨機 預測 介紹 第五章節點的重要性與相似性 關鍵節點是網絡科學的重要研究內容之一本章要重點詳細介紹無向網絡中節點重要性排序的幾個常用指標:度值,介數,接近數,k-殼值和特征向量 5.2無向網絡節點重要性指標5.2.1度中心性 一個節點
通證經濟大局觀(二十):價值生產率與供給、需求
價值是個主觀的東西,一個東西對你有效用,你才覺得有價值。對應於供給和需求來說,那就是有人用,也就是有需求的供給才是有價值的供給。 傳統經濟裡的物品和勞務大多帶有“原子”屬性,你用了別人就沒法用,或者是你用的時候別人就沒辦法用,比如一個蘋果,你吃了別人就沒辦法吃;一個座位你坐了,別人就沒辦法坐。所
通證經濟大局觀(二十一):價值生產率與供給、需求
價值是個主觀的東西,一個東西對你有效用,你才覺得有價值。對應於供給和需求來說,那就是有人用,也就是有需求的供給才是有價值的供給。 傳統經濟裡的物品和勞務大多帶有“原子”屬性,你用了別人就沒法用,或者是你用的時候別人就沒辦法用,比如一個蘋果,你吃了別人就沒辦法吃;一個座位你坐了,別人就沒辦法坐。所
深入理解Javascript中的堆與棧、淺拷貝與深拷貝
Javascript中的淺拷貝與深拷貝 先從JavaScript的資料型別存放的位置堆疊開始說吧 什麼是堆疊? 我們知道計算機領域中堆疊是兩種資料結構,它們只能再一端(稱為棧頂(top))對資料項進行插入和刪除。 堆:佇列優先,先進先出,由作業系統自動分配釋放,存放函式的引數值,區域性變數的
1.19 JQuery2:節點插入與節點選取
節點選取 jQuery.parent(expr) 找父親節點,可以傳入expr進行過濾,比如$("span").parent()或者$("span").parent(".class") jQuery
第四次工業革命:區塊鏈與IoT、大資料、AI的合併初露端倪
第四次工業革命:區塊鏈與IoT、大資料、AI的合併初露端倪 人工智慧(AI),區塊鏈和物聯網(IoT)以及大資料,未來的“四大”技術已經脫穎而出。從他們的萌芽階段開始,他們的成長和問題都受到關注。 正是由於這個原因,許多人和公司開始懷疑這些問題是否無法通過組合技術來解決。作為基石元件
回鍋DS-3:基本操作與指標體驗
(本系列出自一位在工作後“回鍋資料結構”且堅持寫學習反思的網友。他用郵件發給我,徵得他的同意,我在我的部落格中當“原創”連載發出來。和我的關聯是,他的學習路線中,的確有我提供的方法的影子。) 賀老師,現在在看您的資料結構教程視訊,系統的學習資料結構。 1.知識遷移的能力鍛鍊好,這
JavaScript基礎(十)動畫、事件委託、3DBanner
動畫、事件委託、3DBanner 動畫 一個簡單的動畫 QQ客戶懸浮窗 動畫封裝 案例-Banner輪播圖 焦點淡入淡出 向上向下 向左向右 無縫自動播放
Vue框架整理:動態設定樣式style、class
先來說一下: :class 是可以與 一般用class 並存的 動態新增的類名是基於資料的,當對應的資料為 true 時會顯示,否則沒有 物件語法: 繫結單個class: <!DOCTYPE html> <html lang=
面試題-冒泡與捕獲、事件委託、ie事件和dom模型事件、滑鼠事件
一直沒有搞懂jquery中的事件是怎麼新增事件處理程式的。原來就是用了事件委託,關鍵就是通過冒泡方式實現在最高層(document)處理事件,通過判斷事件target的id,給以不同的handler。當然也可以通過事件捕獲來處理,但是因為ie中只有冒泡,所以還是用
javascript:棧記憶體與堆記憶體淺談
首先,我們來舉個爪子: var m = 1; var n = m; n=2; console.log(m); 大家覺得答案是什麼?是一的情自覺點贊,不開玩笑了,其實這個很簡單,對吧。那麼我們再來一
讀寫檔案節點---echo與read、write均可
#include <linux/module.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/device.h> #include <as
12. HTTP協議二:HTTP請求與響應、常見狀態碼
pro per 多重 並發 not 條件 轉換 tip author HTTP請求與響應 HTTP請求 HTTP請求是指從客戶端到服務器端的請求消息。HTTP請求主要由三部分構成,請求行、請求頭(headers)、body(請求數據)。 上圖是筆者用Charles抓包工
每天3分鐘作業系統修煉祕籍(14):IO操作和DMA、RDMA
點我檢視祕籍連載 I/O操作和DMA、RDMA 使用者程序想要執行IO操作時(例如想要讀磁碟資料、向磁碟寫資料、讀鍵盤的輸入等等),由於使用者程序工作在使用者模式下,它沒有執行這些操作的許可權,只能通過發起對應的系統呼叫請求作業系統幫忙完成這些操作。這裡因為系統呼叫產生中斷將陷入到核心,進行一次上下文切換操作
前端(十二)—— JavaScript基礎操作:if語句、for循環、while循環、for...in、for...of、異常處理、函數、事件、JS選擇器、JS操作頁面樣式
結束 建議 prop map、set -c 表單元素 tle form collect JavaScript基礎操作 一、分支結構 1、if語句 if 基礎語法 if (條件表達式) { 代碼塊; } // 當條件表達式結果為true,會執行代碼塊;反之不執行
總結:JavaScript非同步、事件迴圈與訊息佇列、微任務與巨集任務
本人正在努力學習前端,內容僅供參考。由於各種原因(不喜歡部落格園的UI),大家可以移步我的github閱讀體驗更佳:傳送門,喜歡就點個star咯,或者我的部落格:https://blog.tangzhengwei.me 掘金:傳送門,segmentfault:傳送門 前言 Phili
(轉)總結:JavaScript非同步、事件迴圈與訊息佇列、微任務與巨集任務
前言 Philip Roberts 在演講 great talk at JSConf on the event loop 中說:要是用一句話來形容 JavaScript,我可能會這樣: “JavaScript 是單執行緒、非同步、非阻塞、解釋型指令碼語言。”