婧若钰熙 发表于 2023-2-20 20:10:17

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

好家伙,我回来了,
本篇为《JS高级程序设计》第十四章“DOM编程”学习笔记
 
1.DOM编程

我们知道DOM是HTML文档的编程接口,
我们可以通过HTML代码实现DOM操作,
也同样能够通过JavaScript实现DOM操作。
 
2.JS操作DOM

我们来简单的举个例子:
随便开一个空白的html页面
 
<strong><!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>
   
      <h1>来试试使用js实现dom操作吧
      </h1>
   
</body>
</html></strong>效果如下:

 
此处我们直接在html元素中进行操作,在页面中添加了一行标题(
<strong> 
      <h1>来试试使用js实现dom操作吧
      </h1>
    </strong>)
 
接下来我们使用JS进行相同的DOM操作
<strong><!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>
   
</body>

</html></strong> 

我们实现了同样的效果
 
3.动态脚本


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

<strong>let script = document.createElement("script");
script.src = "plane.js";
document.body.appendChild(script); </strong>(DOM编程农夫三拳:1.新建节点,2.某些操作,3.挂载到父节点上)
  
  我们把上述过程抽象成一个函数
<strong>function loadScript(url) {
let script = document.createElement("script");
script.src = url;
document.body.appendChild(script);
} <br><br>loadScript("plane.js");<br>//外部文件名作为参数</strong>(便于使用)
 
  3.3.script的text属性
现在就有人会想了,如果我有一大串方法或者函数,该怎么处理:
 
js开发者早就替我们想好了,<script>元素上有一个 text 属性,可以用来添加 JavaScript 代码
<strong>  let script = document.createElement("script");
    script.text = "function dosomething(){alert('hi');} dosomething()";
    document.body.appendChild(script);</strong> 
4.动态样式


CSS 样式在 HTML 页面中可以通过两个元素加载。元素用于包含 CSS 外部文件,而 DOM编程:
<strong>let style = document.createElement("style");
style.type = "text/css";
style.appendChild(document.createTextNode("body{background-color:red}"));
let head = document.getElementsByTagName("head");
head.appendChild(style);</strong> 
 
5.DOM操作表格:

HTML 中最复杂的结构之一,通常要涉及大量标签,其相应DOM操作也十分复杂
<strong><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> </strong>以这个表格为例
<strong>// 创建表格
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); </strong>(看的眼都花了,八个标签不停套娃,DOM操作十分复杂)
于是,为了方便创建表格,HTML DOM 给、和 元素添加了一些属性和方法。
 
<strong><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),在表元集合给定位置插入一个表元,返回该表元的引用</strong><strong>// 创建表格
let table = document.createElement("table");
table.border = 1;
table.width = "100%";
// 创建表体
let tbody = document.createElement("tbody");
table.appendChild(tbody);
<br>// 创建第一行
tbody.insertRow(0);
//插入单元
tbody.rows.insertCell(0);
//单元插入元素
tbody.rows.cells.appendChild(document.createTextNode("Cell 1,1"));
tbody.rows.insertCell(1);
tbody.rows.cells.appendChild(document.createTextNode("Cell 2,1"));
// 创建第二行
tbody.insertRow(1);
tbody.rows.insertCell(0);
tbody.rows.cells.appendChild(document.createTextNode("Cell 1,2"));
tbody.rows.insertCell(1);
tbody.rows.cells.appendChild(document.createTextNode("Cell 2,2"));
// 把表格添加到文档主体
document.body.appendChild(table); </strong>这样一看,整个表格的DOM操作变得十分明了,且逻辑清晰
 
 
6.小结

感觉DOM操作是整个JS学习线路上非常重要的一环,这个感觉重要到就属于是别人默认你会的那种,还是得记一记.
比如某一天你要给别人写包了,被人给你一个div,然后你不会操作,就很尴尬.所以还是得学

来源:https://www.cnblogs.com/FatTiger4399/p/17138374.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 第120篇: DOM编程(常用操作、动态脚本、样式及动态表格)