首页IT科技dom常见操作(第120篇: DOM编程(常用操作、动态脚本、样式及动态表格))

dom常见操作(第120篇: DOM编程(常用操作、动态脚本、样式及动态表格))

时间2025-06-20 20:55:29分类IT科技浏览4458
导读:好家伙,我回来了,...

好家伙            ,我回来了                   ,

本篇为《JS高级程序设计》第十四章“DOM编程             ”学习笔记

1.DOM编程

我们知道DOM是HTML文档的编程接口      ,

我们可以通过HTML代码实现DOM操作         ,

同样能够通过JavaScript实现DOM操作            。

2.JS操作DOM

我们来简单的举个例子:

随便开一个空白的html页面

效果如下:

此处我们直接在html元素中进行操作                   ,在页面中添加了一行标题(

  <div> <h1>来试试使用js实现dom操作吧 </h1> </div>

接下来我们使用JS进行相同的DOM操作

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <!-- <div> <h1>来试试使用js实现dom操作吧 </h1> </div> --> </body> <script> //创建div元素 let div =document.createElement(div) //创建h1元素 let h1 =document.createElement(h1) //创建文本元素 let text1 = document.createTextNode(来试试使用js实现dom操作吧) //将文本元素添加到h1中 h1.appendChild(text1) //将h1添加到div元素中 div.appendChild(h1); //将该div元素挂载到body下 document.body.appendChild(div); </script> </html>

我们实现了同样的效果

3.动态脚本

<script>元素用于向网页中插入 JavaScript 代码         ,可以是 src 属性包含的外部文件      ,也可以是作为该元素内容的源代码                   。动态脚本就是在页面初始加载时不存在                   ,之后又通过 DOM 包含的脚本      。与对应的HTML 元素一样             ,有两种方式通过<script>动态为网页添加脚本:引入外部文件和直接插入源代码         。

3.1.进行动态加载

<script src="plane.js"></script>

3.2.通过DOM编程创建这个节点

let script = document.createElement("script"); script.src = "plane.js"; document.body.appendChild(script);

(DOM编程农夫三拳:1.新建节点,2.某些操作,3.挂载到父节点上)

  我们把上述过程抽象成一个函数

function loadScript(url) { let script = document.createElement("script"); script.src = url; document.body.appendChild(script); } loadScript("plane.js");//外部文件名作为参数

(便于使用)

  3.3.script的text属性

现在就有人会想了,如果我有一大串方法或者函数,该怎么处理:

<script> function dosomething() { alert("hi"); } dosomething(); </script>

js开发者早就替我们想好了,<script>元素上有一个 text 属性   ,可以用来添加 JavaScript 代码

  let script = document.createElement("script"); script.text = "function dosomething(){alert(hi);} dosomething()"; document.body.appendChild(script);

4.动态样式

CSS 样式在 HTML 页面中可以通过两个元素加载                   。<link>元素用于包含 CSS 外部文件                  ,而<style>元素用于添加嵌入样式         。

4.1.<link>导入

<link rel="stylesheet" type="text/css" href="styles.css">

DOM编程:

function loadStyles(url){ let link = document.createElement("link"); link.rel = "stylesheet"; link.type = "text/css"; link.href = url; let head = document.getElementsByTagName("head")[0]; head.appendChild(link); }

4.2.<style>元素

<style type="text/css"> body { background-color: red; } </style>

DOM编程:

let style = document.createElement("style"); style.type = "text/css"; style.appendChild(document.createTextNode("body{background-color:red}")); let head = document.getElementsByTagName("head")[0]; head.appendChild(style);

5.DOM操作表格:

HTML 中最复杂的结构之一,通常要涉及大量标签,其相应DOM操作也十分复杂

<table border="1" width="100%">   <tbody>     <tr>       <td>Cell 1,1</td>        <td>Cell 2,1</td>      </tr>     <tr>       <td>Cell 1,2</td>       <td>Cell 2,2</td>      </tr>   </tbody> </table>

以这个表格为例

// 创建表格 let table = document.createElement("table"); table.border = 1; table.width = "100%"; // 创建表体 let tbody = document.createElement("tbody"); table.appendChild(tbody); // 创建第一行 let row1 = document.createElement("tr"); tbody.appendChild(row1); let cell1_1 = document.createElement("td"); cell1_1.appendChild(document.createTextNode("Cell 1,1")); row1.appendChild(cell1_1); let cell2_1 = document.createElement("td"); cell2_1.appendChild(document.createTextNode("Cell 2,1")); row1.appendChild(cell2_1); // 创建第二行 let row2 = document.createElement("tr"); tbody.appendChild(row2); let cell1_2 = document.createElement("td"); cell1_2.appendChild(document.createTextNode("Cell 1,2")); row2.appendChild(cell1_2); let cell2_2= document.createElement("td"); cell2_2.appendChild(document.createTextNode("Cell 2,2")); row2.appendChild(cell2_2); // 把表格添加到文档主体 document.body.appendChild(table);

(看的眼都花了,八个标签不停套娃,DOM操作十分复杂)

于是,为了方便创建表格                ,HTML DOM 给            、和 元素添加了一些属性和方法      。

<table>元素添加了以下属性和方法:  caption,指向<caption>元素的指针(如果存在);  tBodies               ,包含<tbody>元素的 HTMLCollection;  tFoot                   ,指向<tfoot>元素(如果存在);  tHead   ,指向<thead>元素(如果存在);  rows            ,包含表示所有行的 HTMLCollection;  createTHead()                   ,创建<thead>元素      ,放到表格中         ,返回引用;  createTFoot()                   ,创建<tfoot>元素         ,放到表格中      ,返回引用;  createCaption()                   ,创建<caption>元素             ,放到表格中   ,返回引用;  deleteTHead()                  ,删除<thead>元素;  deleteTFoot()                ,删除<tfoot>元素;  deleteCaption(),删除<caption>元素;  deleteRow(pos)               ,删除给定位置的行;  insertRow(pos)                   ,在行集合中给定位置插入一行                   。 <tbody>元素添加了以下属性和方法:  rows   ,包含<tbody>元素中所有行的 HTMLCollection;  deleteRow(pos)            ,删除给定位置的行;  insertRow(pos)                   ,在行集合中给定位置插入一行      ,返回该行的引用             。 <tr>元素添加了以下属性和方法:  cells         ,包含<tr>元素所有表元的 HTMLCollection;  deleteCell(pos)                   ,删除给定位置的表元;  insertCell(pos)         ,在表元集合给定位置插入一个表元      ,返回该表元的引用
// 创建表格 let table = document.createElement("table"); table.border = 1; table.width = "100%"; // 创建表体 let tbody = document.createElement("tbody"); table.appendChild(tbody); // 创建第一行 tbody.insertRow(0); //插入单元 tbody.rows[0].insertCell(0); //单元插入元素 tbody.rows[0].cells[0].appendChild(document.createTextNode("Cell 1,1")); tbody.rows[0].insertCell(1); tbody.rows[0].cells[1].appendChild(document.createTextNode("Cell 2,1")); // 创建第二行 tbody.insertRow(1); tbody.rows[1].insertCell(0); tbody.rows[1].cells[0].appendChild(document.createTextNode("Cell 1,2")); tbody.rows[1].insertCell(1); tbody.rows[1].cells[1].appendChild(document.createTextNode("Cell 2,2")); // 把表格添加到文档主体 document.body.appendChild(table);

这样一看,整个表格的DOM操作变得十分明了                   ,且逻辑清晰

6.小结

感觉DOM操作是整个JS学习线路上非常重要的一环,这个感觉重要到就属于是别人默认你会的那种,还是得记一记.

比如某一天你要给别人写包了,被人给你一个div,然后你不会操作,就很尴尬.所以还是得学

声明:本站所有文章             ,如无特殊说明或标注   ,均为本站原创发布   。任何个人或组织                  ,在未征得本站同意时                ,禁止复制                   、盗用      、采集         、发布本站内容到任何网站                   、书籍等各类媒体平台                  。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理                。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
关闭磁贴模式(关闭动态磁贴)