在dom最前面插入_JavaScript中的DOM

1. 關于DOM

文檔對象模型(DocumentObject Model),是基于瀏覽器編程的一套API接口,W3C出臺的推薦標準,每個瀏覽器都有一些細微的差別,其中以Mozilla(火狐)的瀏覽器最與標準接近。

通過 DOM,可以訪問所有的 HTML元素,連同它們所包含的文本和屬性。可以對其中的內容進行修改和刪除,同時也可以創建新的元素。

2. 動態改變文檔內容

要想對頁面的內容做修改,需要如下方式來操作:

? a.解析文檔(如HTML)并生成DOM樹

? b.通過DOM提供的屬性和方法,獲取或改變文檔的內容

2.1 DOM的節點

HTML 文檔中的每個成分都是一個節點(Node)

DOM 是這樣規定的:

  • 整個文檔是一個文檔節點
  • 每個 HTML 標簽是一個元素節點
  • 包含在 HTML 元素中的文本是文本節點
  • 每一個 HTML 屬性是一個屬性節點
  • 注釋屬于注釋節點

2.1.1 節點間的關系

節點彼此都有等級關系

父節點、子節點、兄弟節點(同級節點)

2.2 DOM標準接口

W3C提供了三類DOM標準接口,如下:

? a. 核心DOM,適用于各種結構化文檔

? b.HTML DOM,專用于HTML文檔

c. XML DOM,專用于XML文檔

3. 核心DOM操作

3.1 訪問節點

59dc044cafb86603462c2740896de0ea.png

訪問節點兼容處理

b1b00782c3e24099a942916e3cce98fb.png

getElement系列方法

使用getElement系列方法來訪問指定的節點

  • getElementById():返回對擁有指定id的第一個對象的引用
  • getElementsByTagName():返回帶有指定名稱的對象集合
  • getElementsByClassName():返回指定的類選擇器的集合
  • getElementsByName():返回帶有指定名稱的對象集合(注意不是所有標簽都有name屬性)

3.1.1 節點信息1

每個節點都擁有包含節點某些信息的屬性

  • nodeName(節點名稱)
  • nodeValue(節點值)
  • nodeType(節點類型)

3.1.2 節點信息2

nodeName

  • 元素節點的 nodeName (節點名稱)是標簽名稱
  • 屬性節點的 nodeName 是屬性名稱
  • 文本節點的 nodeName 永遠是 #text
  • 文檔節點的 nodeName 永遠是 #document

nodeValue

  • 對于文本節點,nodeValue 屬性包含文本
  • 對于屬性節點,nodeValue 屬性包含屬性值

nodeType

  • 元素 1 、屬性 2、 文本 3、 注釋 8、 文檔 9
  • 上面不同的數值代表不同的節點類型

3.2 創建和操作節點

3.2.1 主要方法

方法 說 明

createElement( tagName) 創建一個名為tagName的新元素節點,用法Document.createElement(標簽名)

ANode.appendChild( BNode) 把子節點B追加到父節點A里面的末尾

insertBefore( ANode,BNode ) 把A節點插入到B節點之前

Node.loneNode(deep) deep為true則復制該節點以及該節點的所有子節點,為false則只復制該節點和其屬性

3.2.2 操作節點的屬性

8c5007ac29b86b7cc077ff7d43af13db.png

3.3 刪除和替換節點

方法 說 明

removeChild( node) 刪除指定的節點(用父級元素去調用它)

replaceChild( newNode, oldNode) 用newNode來替換oldNode(https://www.cnblogs.com/zzq919101/p/6017152.html)

3.3.1 removeChild()示例代碼如下

var?tb?=?document.getElementById("tb");//先找到要刪除的節點,這里要刪除一行var?tr?=?tb.lastChild.lastChild;//這里也需要父節點操作子節點tr.parentNode.removeChild(tr);??

3.3.2 replaceChild()示例代碼

var?tb?=?document.getElementById("tb");var?tr?=?document.createElement("tr");var?td1?=?document.createElement("td");var?td2?=?document.createElement("td");td1.innerHTML?=?"我的內容1";td2.innerHTML?=?"我的內容2";tr.appendChild(td1);tr.appendChild(td2);//父節點操作子節點//兩個參數,第一個表示新節點,第二個表示舊節點,這里用心節點替換舊節點tb.lastChild.replaceChild(tr,tb.lastChild.firstChild);?

3.4 其他

id,value等操作

innerHTML和innerText的區別

  • 如果內容中有html標簽,使用innerHTML時,內容中的html標簽會被解析出來,而使用innerText時,html只會被當作文本顯示出來

元素.style.樣式

className

3.5 示例

代碼1:

60d176911a6d02e4290e44fb8d4b561f.png

結果1:

1a07fe12b6f186f294e4bc1c46b71ba1.png

代碼2:

b5e743e4641db43f9b4ea912658ba700.png

結果2:

314580cb2f590598550dca73add9bce2.png

代碼3:

309cc09a247117d29c3f3638b265e481.png

結果3:

e3b1164f5cf90eafec7085590048424d.png

4. HTML DOM操作

? HTML文檔中的每個節點,都是DOM對象,每個DOM對象都有屬于自己的屬性和方法.

? HTML DOM在操作表格時,我們把一個表格看成是一個table對象,那么一個table對象是由若干個行對象(row)組成的,而其中每個行對象又是由若干個單元格對象(cell)組成的

? Table對象可以操作行對象,行對象可以操作單元格對象

4.1 table表格對象

類別 名稱 描述

屬性 rows[] 返回包含表格中所有行的一個數組

方法 insertRow() 在表格中插入一個新行

方法 deleteRow() 從表格中刪除一行

4.2 row行對象

類別 名稱 描述

屬性 cells[] 返回包含行中所有單元格的一個數組

屬性 rowIndex 返回該行在表中的位置

方法 insertCell() 在一行中的指定位置插入一個空的

標簽

方法 deleteCell() 刪除行中指定的單元格

另,對于單元格對象,還有cellIndex可以獲取單元格的索引號

例如,這里需要在表格的末尾追加一行:

var?tb?=?document.getElementById("tb");//添加之前,tb中共有多少個tr,返回的是一個數組var?alltrs?=?tb.lastChild.rows;//先在tb中添加一行,此時行雖然添加了,但行中沒有任何內容//此時傳遞的參數了,是一個添加的位置,是tr的索引號,這里是在末尾追加var?newtr?=?tb.insertRow(alltrs.length);//再在新添加的行中,添加單元格對象var?td1?=?newtr.insertCell(0);var?td2?=?newtr.insertCell(1);//然后還需要往td中添加內容td1.innerHTML?=?"html?dom";td2.innerHTML?=?"測試";?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534266.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 快速刪除程序_如何快速一次性卸載所有python包(第三方庫)呢

很多時候我們都會有一個麻煩事,就是打開pycharm或者VScode等的時候,都有可能因為自己電腦上面安裝的第三方模塊過多,導致電腦很卡,風扇轉速不停地增加,這時候我們就會想去卸載一些不太用得著的第三方模塊,但…

python正則表達式修飾符_Python正則表達式

正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。re 模塊使 Python 語言擁有全部的正則表達式功能。compile 函數根據一個模式字符串和可選的標志參數生成一個正則表達式對象。該對象擁有一系列方法用于正則表達式匹配和替換。r…

當代最值得收藏的畫家作品_當代最具潛力和收藏價值的十大畫家

原標題:當代最具潛力和收藏價值的十大畫家當代從事繪畫的人成千上萬,哪些名家作品值得收藏?當前都有哪些“潛力股”,相關專家綜合市場分析,純從藝術水準上列出值得收藏的“潛力股”,供愛好書畫收藏的各界人…

備抵附加賬戶的期末余額_會計賬戶的分類(二)

待攤費用賬戶的格式和運用方法同盤存類賬戶,即:期初如果有余額在借方,本期發生額的增加數在借方,本期發生額的減少數在貸方,期末如果有余額在借方。預提費用賬戶是指用來核算和監督按規定預先提取計入當期,…

mysql union all 別名_mysql union和union all

如下先創建2個表,aa bb.CREATE table aa(uid int(20) not null,name VARCHAR(30) not null)engineinnodb default charsetutf8mb4 COLLATE utf8mb4_general_ci;INSERT INTO aa(uid, name) VALUES (10, 張芳);INSERT INTO aa(uid, name) VALUES (11, 王凱);INSERT IN…

MySQL不走聯合索引_mysql group by 多列優化思路?為什么不走聯合索引?

explain SELECT a, b, COUNT(*) FROM tbnameGROUP BY a, border by a DESClimit 1a 和 b 列已經設置聯合索引, 為什么這種操作也會執行全表掃描呢?explain SELECT a, b FROM tbnameGROUP BY a, border by a DESC去掉 COUNT 和 limit 則走索引沒有掃描&am…

mysql ddl 鎖_MySQL Online DDL導致全局鎖表案例分析

MySQL Online DDL導致全局鎖表案例分析我這邊遇到了什么問題?線上給某個表執行新增索引SQL, 然后整個數據CPU打到100%, 連接數暴增到極限, 最后導致所有訪問數據庫的應用都奔潰.SQL如下:ALTER TABLE bookADD INDEX idx_sub_title (sub_title ASC);能看到什么?10063293, root,…

ci框架 亂碼 mysql_mysql容器亂碼問題

在docker-compose.yml文件中定義mysql導入utf-8的萬國碼services:mysql:image:mysql:5.7# command: [--character-set-serverutf8mb4, --collation-serverutf8mb4_unicode_ci]volumes:-./data/docker/mysql:/var/lib/mysql-./mysql/:/docker-entrypoint-initdb.d/-./conf/mys…

mysql分表 查詢 優化_MySQL性能管理及架構(查詢優化、分庫分表)一遍文章搞定...

相關配置參數:slow_query_log # 啟動停止記錄慢查日志,慢查詢日志默認是沒有開啟的可以在配置文件中開啟(on)slow_query_log_file # 指定慢查日志的存儲路徑及文件,日志存儲和數據從存儲應該分開存儲long_query_time # 指定記錄慢查詢日志SQL…

dokcer mysql修改編碼_默認支持utf8編碼的mysql docker鏡像

其他人都是不正確的使用mysql容器鏡像可以很快速的運行mysql,免去了傳統的虛擬機安裝方式的繁瑣配置。但是使用官方的mysql鏡像,你會遇到中文亂碼的問題,原因是官方鏡像的字符集默認值不是utf8。這時候你去google,會找到一些文章&…

mysql臨時表 清空_在數據庫中臨時表什么時候會被清除呢

展開全部我們仍使用 實驗 05 中的環境,略去準備數據的過程。我們仍然使用兩個會話,62616964757a686964616fe59b9ee7ad9431333433646439一個會話 run,用于運行主 SQL;另一個會話 ps,用于進行 performance_schema 的觀察…

locust mysql_locust性能壓測連接mysql,隨機取出班級,綁定學生

from locust import HttpLocust, TaskSet, taskimport pymysqlimport randomclass UserBehavior(TaskSet):def on_start(self):db pymysql.connect("ip地址", "用戶名", "密碼", "數據庫")cursor db.cursor()cursor.execute("S…

mysql無法添加或更新子行_違反完整性約束:1452無法添加或更新子行:

我試圖在我的注釋表中插入值,但出現錯誤。俗話說,我不能添加或更新子行,我也不知道這意味著什么。我的架構看起來像這樣-- ------------------------------ Table structure for comments-- ----------------------------DROP TABLE IF EXIST…

python醫學圖像分割_基于cv2的醫學圖像分割

例如,圖像如下所示:import cv2import numpy as npimg cv2.imread("mdb168.pgm",0)import matplotlib.pyplot as pltplt.imshow(img, cmap"gray")我想刪除圖像中所有的偽影和不必要的部分。在為此,我首先對圖像進行二值化…

python解析response的json_從HTML responseTex解析JSON

因此,我大體上同意,更好的解決方案是確保服務器只返回JSON,不過這是通過客戶端Javascript實現的一種快速方法,如Barmer所建議的那樣,將html解析到DOM,獲取body中的文本childNode并在其上運行JSONParse。在v…

mysql 密碼修改時間_Mysql修改密碼的方法

修改mysql密碼的方法:最簡單的,在Navicat連接后點用戶,找到rootlocalhost直接修改。注意如果裝了xampp,在phpmyadmin配置文件也需要改兩處密碼。下面是在命令行修改的方法。方法1:用mysqladmin----------------親測這個…

svn版本庫瀏覽器_在SVN版本庫瀏覽器中直接編輯文件保存后不會彈..._網絡編輯_幫考網...

原因是沒有實際添加到版本庫中,要添加到版本庫必須執行“Commit”。具體分析如下:SVN錯誤處理svn : Couldn’t perform atomic initialization. 臨時解決辦法:升級sqlite。原本安裝的是 subversion 1.6.16 sqlite 3.6.13,一直報”…

ubuntu下使用python將ppt轉成圖片_Ubuntu下使用Python實現游戲制作中的切分圖片功能...

本文實例講述了Ubuntu下使用Python實現游戲制作中的切分圖片功能。分享給大家供大家參考,具體如下:why拿到一個人物行走的素材,要用TexturePacker打包。TexturePacker打包后,助于游戲加載圖片效率,且比較好管理。目前得…

世上最簡單的mysql_mysql這樣學最簡單|基本操作上

這是數據庫系列的第一篇文章,主要是對mysql的基本操作有一個了解。本系列的教程會先從基礎出發,逐步過渡到優化。一、前提在這里我們不會從如何去安裝數據庫開始講起,而是在安裝完之后從操作數據庫開始,文中所有的代碼均在我自己的…

django ipython shell_django shell ipython 模型層優化(關聯對象) 懶加載和預加載 +長鏈接...

懶加載存在于外鍵和多對多關系不檢索關聯對象的數據調用關聯對象會再次查詢數據庫問題根源查看django orm的數據加載,兩次. 查詢user,查詢menu第一次查詢 用戶表 第二次查詢 app表cmd:python manage.py shell #進入shell調試 或者ipythonfrom authorization.models import Use…