JavaWeb-【3】DOM

news2024/11/14 1:24:50

笔记系列持续更新,真正做到详细!!本次系列重点讲解后端,那么第一阶段先讲解前端【续上篇CSS和JavaScript

目录

1、dom介绍

2、html-dom

3、document

4、应用实例

①、应用实例1

②、多选框案例 

③、图片切换案例

④、添加小猫案例

5、dom文档说明

6、获取option节点

7、按照name获取节点

8、获取指定dom对象下的子节点

9、获取第一个节点

10、获取父节点

11、获取兄弟节点

12、设置文本域内容

13、练习-乌龟吃鸡游戏

①、展示

②、动起来思路

③、绑定move

④、乌龟动起来+实现碰撞

所有代码实现:


 1、dom介绍

而每一个对象都存在一定的属性和方法从而反作用于对象,其中所有的对象就构成了一个dom树,注意:浏览器是按照dom树进行展示的,单独一个对象浏览器无法展示,所以一个对象必须挂到dom树上才能显示这个对象

2、html-dom

 3、document

js36应用实例1

静态绑定:

 

4、应用实例

①、应用实例1

要求完成点击韩顺平教育时,出现弹窗

解决这个问题可以用静态绑定或者动态绑定来解决

 innerText和innerHTML的区别  + 静态绑定:

 动态绑定:

②、多选框案例 

 要求你把全选,全不选以及反选功能实现【全选就是运动项目全选,另外两个同理】

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>getElementsByName 函数</title>
<script type="text/javascript">

//完成全选
function selectAll() {
//1.获取到 sport这一组复选框
var sports = document.getElementsByName("sport");
//sports是什么?是 nodeList,即是一个集合
//alert(sports); 

//2.拿到[dom ,集合],操作【属性和方法 api】
//遍历 sports, 进行修改
for (var i = 0; i < sports.length; i++) {
sports[i].checked = true;//选中
}
}

//全不选
function selectNone() {
var sports = document.getElementsByName("sport");
for (var i = 0; i < sports.length; i++) {
sports[i].checked = false;//全部不选中
}
}

//反选
function selectReverse() {
var sports = document.getElementsByName("sport");
for (var i = 0; i < sports.length; i++) {
// if(sports[i].checked) {//js true
// sports[i].checked = false;
// } else {
// sports[i].checked = true;//
选中
// }
sports[i].checked = !sports[i].checked;
}
}
</script>
</head>
<body>
你会的运动项目:
<input type="checkbox" name="sport" value="zq" checked="checked">足球
<input type="checkbox" name="sport" value="tq">台球
<input type="checkbox" name="sport" value="ppq">乒乓球 <br/><br/>
<button onclick="selectAll()">全选</button>
<button onclick="selectNone()">全不选</button>
<button onclick="selectReverse()">反选</button>
</body>
</html>

③、图片切换案例

先完成初步需求:点击“查看多少小猫,并切换成小狗”按钮后三只小猫图片切换成三只小狗 

 首先把这6张图片放到img目录下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>getElementsByTagName</title>
<script type="text/javascript">
function changeImgs() {
//1.得到所有的 img
var imgs = document.getElementsByTagName("img");
//imgs是 HTMLCollections,即集合
alert("猫猫的数量是=" + imgs.length);
//2.遍历修改 src
for (var i = 0; i < imgs.length; i++) {
imgs[i].src = "./img/" + (i+4) +".png";
}
}
</script>
</head>
<body>
<img src="./img/1.png" height="100">
<img src="./img/2.png" height="100">
<img src="./img/3.png" height="100">
<br/>
<input type="button" onclick="changeImgs()"
value="查看多少小猫,并切换成小狗"/>
</body>
</html>

 进阶需求:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>课后作业猫狗切换</title>
<script type="text/javascript">
function changeImgs() {
//对程序的结构进行一个调整
//(1) input增加 id,可以修改 value【即修改按钮上的文字】
var but1 = document.getElementById("but1");
//1.得到所有的 img
var imgs = document.getElementsByTagName("img");
//imgs是 HTMLCollections
//alert("动物数量是= " + imgs.length);

//(2)根据 input的 value值来决定是切换猫还是狗 if -- else if ---
if(but1.value == "查看多少小猫,并切换成小狗") { //猫->狗
//2.遍历修改 src
for (var i = 0; i < imgs.length; i++) {
imgs[i].src = "./img/" + (i + 4) + ".png";
}
but1.value = "查看多少小狗,并切换成小猫";
} else if(but1.value == "查看多少小狗,并切换成小猫") {//狗->猫
//2.遍历修改 src
for (var i = 0; i < imgs.length; i++) {
imgs[i].src = "./img/" + (i + 1) + ".png";
}
but1.value = "查看多少小猫,并切换成小狗";
}
}
</script>
</head>
<body>
<img src="./img/1.png" height="100">
<img src="./img/2.png" height="100">
<img src="./img/3.png" height="100">
<br/>
<input type="button" id="but1" onclick="changeImgs()"
value="查看多少小猫,并切换成小狗"/>
</body>
</html>

④、添加小猫案例

解题 原理:

 之前说过文档一旦被映射就会变成一个dom模型,而在程序中的操作会影响浏览器的展示,比如你加入了某个元素,就会影响浏览器的展示【前提是这个元素必须先挂到dom树,即在程序中的操作会影响浏览器的内存,在浏览器内存中会增加相应的元素。但是文档本身并不会变,其本身不增加元素,它只是影响到了dom树,而dom树一旦被影响,就会反过来对浏览器的页面产生一个变化,整个变化是在内存当中的。

结合这个原理,再对本题进行分析:

我们先创建一个对象【元素】,即程序中img对象,因为对象有属性和方法,所以更改此对象的属性,确定我们要显示图片的样子;接着因为浏览器按照dom树来显示,所以必须把对象挂到dom树上;最终影响到浏览器的显示,但文档本身不受影响。期间用到了onclick点击事件,当点击按钮时才会触发addImg函数,进行小猫的添加,从而影响浏览器的显示

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>createElement</title>
<script type="text/javascript">
function addImg() {//添加小猫
//在浏览器内存中 创建<img></img>
var img = document.createElement("img");
img.src = "./img/1.png";
img.width = "100";
//把对象添加到 body标签
document.body.appendChild(img);
}
</script>
</head>
<body>
<input type="button" onclick="addImg()"
value="点击创建一只小猫~"/>
</body>
</html>

注:

但是这里只是创建了 一个对象,因为浏览器是按照dom树进行展示的,所以这里必须把dom对象挂到dom树上

测试:

5、dom文档说明

 查文档资料直接w3school上查询即可

6、获取option节点

节点常用方法

  • 1. 通过具体的元素节点调用 getElementsByTagName() 方法,获取当前节点的指定标签名
  • 孩子节点
  • 2. appendChild( oChildNode ) 方法,可以添加一个子节点,oChildNode 是要添加的孩子节
  • 点 

 首先要引入css文件

CHARSET "UTF-8";
body {
width: 800px;
margin-left: auto;
margin-right: auto;
}
button {
width: 200px;
margin-bottom: 10px;
text-align: left;
}
#btnList {
float:left;
}
#total{
width: 450px;
float:left;
}
ul{
list-style-type: none;
margin: 0px;
padding: 0px;
}
.inner li{
border-style: solid;
border-width: 1px;
padding: 5px;
margin: 5px;
float:left;
}
.inner{
width:400px;
border-width: 1px;
margin-bottom: 10px;
padding: 10px;
float: left;
}

已给代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>演示 HTML DOM 相关方法</title>
<link rel="stylesheet" type="text/css" href="style/css.css"/>
</head>
<body>
<div id="total">
<div class="inner">
<P>
你会的运动项目:
</P>
<input type="checkbox" name="sport" value="zq" checked="checked">足球
<input type="checkbox" name="sport" value="tq">台球
<input type="checkbox" name="sport" value="ppq">乒乓球 <br/>
<hr/>
<P>
你当前女友是谁:
</P>
<select id="sel01">
<option>---女友---</option>
<option>艳红</option>
<option id="ct" value="春桃菇凉">春桃</option>
<option>春花</option>
<option>桃红</option>
</select>
<hr/>
<p>
你的编程语言?
</p>
<ul id="language">
<li id="java">Java</li>
<li>PHP</li>
<li>C++</li>
<li>Python</li>
</ul>
<br>
<br>
<hr/>
<p>
个人介绍:
</p>
<textarea name="person" id="person">个人介绍</textarea>
</div>
</div>
<div id="btnList">
<div>
<button id="btn01">查找 id=java 节点</button>
</div>
<div>
<button id="btn02">查找所有 option 节点</button>
</div>
<div>
<button id="btn03">查找 name=sport 的节点</button>
</div>
<div>
<button id="btn04">查找 id=language 下所有 li 节点</button>
</div>
<div>
<button id="btn05">返回 id=sel01 的所有子节点</button>
</div>
<div>
<button id="btn06">返回 id=sel01 的第一个子节点</button>
</div>
<div>
<button id="btn07">返回 id=java 的父节点</button>
</div>
<div>
<button id="btn08">返回 id=ct 的前后兄弟节点</button>
</div>
<div>
<button id="btn09">读取 id=ct 的 value 属性值</button>
</div>
<div>
<button id="btn10">设置#person 的文本域</button>
</div>
</div>
</body>
</html>

注意,下面写的代码都是js代码,如获取子节点、父节点等均要写在window.οnlοad=function()之内,因为用的是动态绑定 

 查找id=java节点

解释:先获取到btn01的dom对象【得到dom之后才能反作用于按钮】,然后注册onclick点击事件查找id=java节点 

点击“查找id=java节点”的按钮后,弹出如下界面: 

 查找所有option节点

7、按照name获取节点

8、获取指定dom对象下的子节点

(1)

 (2)

 

 结果就是会弹出所有option标签内的值,不会打印换行

9、获取第一个节点

object text就可以理解为换行,而你se101[0]直接跳过了换行,直接拿到的就是option

10、获取父节点

 如果都放到一行,就没有换行节点了

11、获取兄弟节点

 

 

12、设置文本域内容

13、练习-乌龟吃鸡游戏

①、展示

 点确定后,乌龟回到初始位置

引入两个图片,再写一个文件进行显示

wugui-game.html的大体结构:

<body>
<table border="1">
<tr>
<td></td>
<td><input type="button" value="向上走"/></td>
<td></td>
</tr>
<tr>
<td><input type="button" value="向左走"/></td>
<td></td>
<td><input type="button" value="向右走"/></td>
</tr>
<tr>
<td></td>
<td><input type="button" value="向下走"/></td>
<td></td>
</tr>
</table>
<!--把乌龟放在一个 div
1. style的 position: absolute表示绝对定位
2. left:100px表示图片距离窗口的原点的横坐标
3. top:120px;表示图片距离窗口的原点的纵坐标
4.针对图片而言,定位的点,是图片的左上角
-->
<div id="wugui" style="position: absolute ;left:100px;top:120px;">
<img src="1.bmp" border="1" alt=""/>
</div>
<!--公鸡图片 div-->
<div id="cock" style="left:200px;position:absolute;top:200px;">
<img src="2.bmp" border="1" alt=""/>
</div>
</body>

②、动起来思路

③、绑定move

 

④、乌龟动起来+实现碰撞

碰撞思路: 

所有代码实现:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>乌龟游戏</title>
<script type="text/javascript">
//定义公鸡的坐标
var cock_top = 200;
var cock_left = 200;
//定义乌龟的高度和宽度
var wugui_height = 67;
var wugui_width = 94;
//定义公鸡的高度和宽度
var cock_height = 73;
var cock_width = 76;
//编程思想,技巧-->不知道是什么就输出,或者日志,或者 debug
//编程小技巧:在不确定情况下,可以输出看看
function move(obj) {
//alert("val= " + obj.value); //这里打印输出为val=[object HTMLinputElement]
// 2.1拿到 wugui dom对象
var wugui = document.getElementById("wugui");
// 2.2获取 wugui.style.left和 wugui.style.top的值, 通过修改就可以让乌龟动起来
var wugui_left = wugui.style.left;
var wugui_top = wugui.style.top;
// alert(wugui_left); //打印出来是100px
// alert(wugui_top);
//分析: wugui_left和 wugui_top是 string '100px' -> nubmer 100
//类型转换靠api   注:substring和indexof语法跟java中的一样
wugui_left = parseInt(wugui_left.substring(0, wugui_left.indexOf("p")));
wugui_top = parseInt(wugui_top.substring(0, wugui_top.indexOf("p")));
//alert("wugui_left= " + wugui_left + typeof wugui_left);
//根据 obj.value来进行上下左右的处理
if ("向上走" == obj.value) {
    wugui_top -= 10;
    wugui.style.top = wugui_top + "px";
} else if ("向下走" == obj.value) {
    wugui_top += 10;
    wugui.style.top = wugui_top + "px";
} else if ("向左走" == obj.value) {
    wugui_left -= 10;
    wugui.style.left = wugui_left + "px";
} else if ("向右走" == obj.value) {
    wugui_left += 10;
    wugui.style.left = wugui_left + "px";
}

//完成碰撞功能
// 4.分析如何判断乌龟和公鸡碰撞
// 4.1得到乌龟和公鸡左上角的距离,纵向距离 y
// (1)如果乌龟在上面, 当 y < 乌龟图片的高度时,说明他们可能在纵向发生重叠,使用 yy记录
// (2)如果乌龟在下面, 当 y < 公鸡图片的高度时,说明他们可能在纵向发生重叠,使用 yy记录
// 4.2得到乌龟和公鸡左上角的距离,横向距离 x
// (1)如果乌龟在左面, 当 x < 乌龟图片的宽度时,说明他们可能在横向发生重叠, 使用 xx记录
// (2)如果乌龟在右面, 当 x < 公鸡图片的宽度时,说明他们可能在横向发生重叠, 使用 xx记录
// 4.3如果 xx和 yy同时为 true,说明一定发生碰撞
//得到乌龟和公鸡左上角的距离,纵向距离 y
var y = Math.abs(wugui_top - cock_top);
//得到乌龟和公鸡左上角的距离,横向距离 x
var x = Math.abs(wugui_left - cock_left);
var yy = 0;//默认纵向没有重叠
var xx = 0;//默认横向没有重叠
//如果乌龟在上面, 当 y < 乌龟图片的高度时,说明他们可能在纵向发生重叠, 使用 yy记录
//如果乌龟在下面, 当 y < 公鸡图片的高度时,说明他们可能在纵向发生重叠, 使用 yy记录
if (wugui_top < cock_top) {//乌龟在上
if (y < wugui_height) {
    yy = 1;
}
} else {//乌龟在下
if (y < cock_height) {
    yy = 1;
}
}
//如果乌龟在左面, 当 x < 乌龟图片的宽度时,说明他们可能在横向发生重叠, 使用 xx记录
//如果乌龟在右面, 当 x < 公鸡图片的宽度时,说明他们可能在横向发生重叠, 使用 xx记录
if (wugui_left < cock_left) {//乌龟在左面
if (x < wugui_width) {
    xx = 1;
}
} else {//乌龟在右面
if (x < cock_width) {
    xx = 1;
}
}
//如果 xx和 yy同时为 true,说明一定发生碰撞
if (xx && yy) {
    alert("乌龟很厉害!");
    //乌龟放到原来的位置
    wugui.style.left = "100px";
    wugui.style.top = "120px";
}
}
</script>
</head>
<body>
<table border="1">
<tr>
<td></td>
<!--1. this表示的是你点击的这个 button,而且已经是一个 dom对象
2.可以使用属性和方法
-->
<td><input type="button" value="向上走" onclick="move(this)"/></td>
<td></td>
</tr>
<tr>
<td><input type="button" value="向左走" onclick="move(this)"/></td>
<td></td>
<td><input type="button" value="向右走" onclick="move(this)"/></td>
</tr>
<tr>
<td></td>
<td><input type="button" value="向下走" onclick="move(this)"/></td>
<td></td>
</tr>
</table>
<!--把乌龟放在一个 div
1. style的 position: absolute表示绝对定位
2. left:100px表示图片距离窗口的原点的横坐标
3. top:120px;表示图片距离窗口的原点的纵坐标
4.针对图片而言,定位的点,是图片的左上角
-->
<div id="wugui" style="position: absolute ;left:100px;top:120px;">
<img src="1.bmp" border="1" alt=""/>
</div>
<!--公鸡图片 div-->
<div id="cock" style="left:200px;position:absolute;top:200px;">
<img src="2.bmp" border="1" alt=""/>
</div>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1939688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高性能图数据库Neo4j从入门到实战

图数据库Neo4j介绍 什么是图数据库&#xff08;graph database&#xff09; 随着社交、电商、金融、零售、物联网等行业的快速发展&#xff0c;现实社会织起了了一张庞大而复杂的关系网&#xff0c;传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈…

密码学基础-Hash、MAC、HMAC 的区别与联系

密码学基础-Hash、MAC、HMAC 的区别与联系 Hash Hash 是一种从一段数据中创建小的数字“指纹”的方法。就像一个人的指纹代表一个人的信息一样&#xff0c;Hash 对输入的数据进行整理&#xff0c;生成一个代表该输入数据的“指纹” 数据。通常该指纹数据也可称之为摘要、散列…

CefSharp音视频编译与免费下载

注&#xff1a;Cefharp 音频和视频播放编译&#xff0c;生成相应的dll文件&#xff0c;从而支持项目开发。 建议编译至少 16G 的 RAM和至少 250G 的 SSD。该脚本以 E 盘为例&#xff0c;您需要在 E 盘上手动创建 cef 文件夹。禁止在转载后通过发布其他平台向用户收取下载费用。…

全国区块链职业技能大赛第八套区块链产品需求分析与方案设计

任务1-1:区块链产品需求分析与方案设计 医疗健康平台中涉及到医院、医生、患者等参与方,他们需要在区块链医疗健康平台中完成账户注册、身份上链、挂号就诊、查询病例等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于医疗健康平台系统架构,以…

【数据结构进阶】二叉搜索树

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; C || 数据结构 目录 &#x1f308;前言&#x1f525;二叉搜索树&#x1f525; 二叉搜索树的实现Insert&#xff08;插入&#xff09;find&#xff08;查找&#xff09;erase(删除)destro…

毕业/期刊论文发表必备:YOLOv5 / v7 / v8 /v10算法网络结构图【文末提供原型文件下载地址】

前言:Hello大家好,我是小哥谈。同学们在写YOLO算法相关毕业论文/期刊论文的时候,不可避免的会用到相关版本的网络结构图,曾有很多小伙伴私信我索要原型文件,本文就给大家提供YOLOv5/v7/v8/v10版本算法网络结构图及原型文件下载地址。🌈 目录 🚀1.网络结构图 �…

Fiddler 导出请求为curl格式

来自:https://www.cnblogs.com/yudongdong/p/15418181.html Fiddler 下载地址: https://downloads.getfiddler.com/fiddler-classic/FiddlerSetup.5.0.20243.10853-latest.exe 这段代码加到类中 public static RulesOption("关闭请求体转代码", "生成代码&qu…

简单页表和多级页表

地址转换(Address Translation) 内存需要被分成固定大小的页(Page)然后再通过虚拟内存地址(Virtual Address) 到物理内存地址(Physical Address) 的地址转换(Address Translation)才能到达实际存放数据的物理内存位置 简单页表 页表的概念 想要把虚拟内存地址&#xff0c;映…

ip地址是电脑还是网线决定的

在数字化时代的浪潮中&#xff0c;网络已经成为了我们日常生活和工作不可或缺的一部分。当我们谈论网络时&#xff0c;IP地址无疑是一个核心的概念。然而&#xff0c;关于IP地址的分配和决定因素&#xff0c;很多人可能存在误解。有些人认为IP地址是由电脑决定的&#xff0c;而…

pytorch 46 将ASpanFormer模型导出onnx运行

ASpanFormer是一个2022年8月份发布的算法,其主要步骤与LoFTR模型类似,因此无法导出为onnx模型。根据ASpanFormer论文中的数据与效果图,可以确定AsPanFormer是可以作为一个比SP+SG更为有效的方案,其在标准数据集上的效果优于SP+SG,在速度上远超SP+SG,与LoFTR接近;在预测点…

C语言:静态库和动态(共享)库

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 在软件开发中&#xff0c;库&#xff08;Library&#xff09;是一个至关重要的概念。它们是由函数和数据的集合构成&#xff0c;用于实现特定的功能&#xff0c;供其他程…

测试——性能测试

内容大纲: 常见的性能问题 性能测试是什么 性能测试和功能测试之间的区别 为什么要进行性能测试 常见的性能指标及性能测试专业术语 性能测试分类 1. 常见的性能问题 系统内部以及软件的代码实现: 资源泄漏&#xff0c;包括内存泄漏。CPU使用率达到100%&#xff0c;系统被锁定…

Vue3组件通信

1、props 1.1 父传子 父组件&#xff1a;通过属性在子组件标签传递 子组件&#xff1a;通过defineProps接收 1.2 子传父 1.父组件先给子组件传递一个函数 2.子组件接收此参数&#xff08;函数&#xff09;&#xff0c;并在合适的时机调用此函数&#xff0c;通过函数的参数&…

SEO之网站结构优化(四)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 4、清晰导航 清晰的导航系统是网站设计的重要目标&#xff0c;对网站信息架构、用户体验影响重大。SEO也越来…

Hadoop高可用集群搭建及API调用

NameNode HA 背景 在Hadoop1中NameNode存在一个单点故障问题,如果NameNode所在的机器发生故障,整个集群就将不可用(Hadoop1中虽然有个SecorndaryNameNode,但是它并不是NameNode的备份,它只是NameNode的一个助理,协助NameNode工作,SecorndaryNameNode会对fsimage和edits文…

【BUG】已解决:OSError: [Errno 22] Invalid argument

已解决&#xff1a;OSError: [Errno 22] Invalid argument 目录 已解决&#xff1a;OSError: [Errno 22] Invalid argument 【常见模块错误】 错误原因&#xff1a; 解决方法如下&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&…

基于luckysheet实现在线电子表格和Excel在线预览

概述 本文基于luckysheet实现在线的电子表格&#xff0c;并基于luckyexcel实现excel文件的导入和在线预览。 效果 实现 1. luckysheet介绍 Luckysheet &#xff0c;一款纯前端类似excel的在线表格&#xff0c;功能强大、配置简单、完全开源。 官方文档在线Demo 2. 实现 …

配置单区域OSPF

目录 引言 一、搭建基础网络 1.1 配置网络拓扑图如下 1.2 IP地址表 二、测试每个网段都能单独连通 2.1 PC0 ping通Router1所有接口 2.2 PC1 ping通Router1所有接口 2.3 PC2 ping通Router2所有接口 2.4 PC3 ping通Router2所有接口 2.5 PC4 ping通Router3所有接口 2.…

力扣 28找到字符串中第一个匹配项的下标 KMP算法

思路&#xff1a; 朴素匹配有很多步骤是多余的 KMP算法能够避免重复匹配 KMP算法主要是根据子串生成的next数组作为回退的依据&#xff0c;它记录了模式串与主串(文本串)不匹配的时候&#xff0c;模式串应该从哪里开始重新匹配。 这里讲一下为什么用模式串的最大公共前后缀…

基于python的当当二手书数据分析与可视化系统设计与实现

1.1 研究背景及现状 1.1.1 研究背景 生态文明建设是我国的基本国情之一&#xff0c;资源利用作为应该重要的环节[1]。然而随着大学校园内掀起倡导的低碳环保热潮&#xff0c;高校学生教材及其他书籍的目前的处理方式已被大多人所关注[2]。从循环利用资源的角度出发[3]&…