JavaScript DOM编程

本文深入讲解了DOM(文档对象模型)的基本概念,包括其在HTML和XML文档中的应用,以及如何使用JavaScript进行DOM操作,如节点的查询、创建、插入、删除和修改。同时,文章还介绍了事件监听的实现方式,提供了多个实践案例,如爱好选择和员工管理,帮助读者掌握DOM编程的核心技能。

 

 

JavaScript DOM编程

 

 

 

  1.  DOM概述
    1. 什么是DOM?
  1. DOM= Document Object Model,文档对象模型, DOM 是 W3C(万维网联盟)的标准。DOM 定义了访问 HTML 和 XML 文档的标准:独立于平台和语言的接口. W3C DOM 标准被分为 3 个不同的部分:
    1. 核心 DOM - 针对任何结构化文档的标准模型
    2. XML DOM - 针对 XML 文档的标准模型
    3. HTML DOM - 针对 HTML 文档的标准模型

 

    1. 什么是HTML DOM?
  1. HTML DOM 定义了访问和操作HTML文档的标准方法。
  2. HTML DOM HTML 文档呈现为带有元素、属性和文本的树结构(节点树)
  3. 当我们用浏览打开一个html文件时, 浏览器内置的HTML解析引擎就会将整个文档加载到内存中, 并根据HTML DOM定义的接口和实现类生成一个包含文件内所有数据的DOM对象树.

 

<html>

   <head>

      <title>文档标题</title>

   </head>

   <body>

      <h1>我的标题</h1>

      <a href="http://www.atguigu.com">我的链接</a>

   </body>

</html>

 

 

 

  1. HTML DOM核心: 节点
    1. HTML节点(Node)
  1. HTML文档中的每个成分都是一个节点。
    1. 整个文档是一个文档节点(Document)
    2. 每个 HTML 标签是一个元素节点(Element)
    3. 每一个 HTML 属性是一个属性节点(Attribute)
    4. 包含在 HTML 元素中的文本是文本节点(Text
    1. Node层次
  1. DOM中的节点彼此都有等级关系。
  2. HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。
    1. HTML DOM节点树
  1. 一棵节点树中的所有节点彼此都是有关系的

<html>

  <head>

    <title>DOM Tutorial</title>

  </head>

  <body>

    <h1>DOM Lesson one</h1>

    <p>Hello world!</p>

  </body>

</html>

 

父节点

除文档节点之外的每个节点都有父节点

子节点

大部分元素节点都有子节点

同辈节点

当节点分享同一个父节点时,它们就是同辈

后代节点

后代指某个节点的所有子节点

先辈节点

先辈是某个节点的父节点,或者父节点的父节点,以此类推

  1. DOM操作
    1. HTML DOM访问节点(查询)

对象类型

属性/方法

说明

文档/元素节点

getElementById(id)

根据标签的id得到对应的标签对象

文档/元素节点

getElementsByTagName(tag)

根据标签名得到对应的所有子标签对象的集合(数组)

 

 

 

节点

nodeName

得到节点名

节点

nodeValue

得到节点的值

节点

nodeType

节点类型值

 

 

 

元素节点

childNodes

得到所有子节点的集合(数组)

元素/文本节点

parentNode

得到父节点对象(标签)

元素节点

firstChild

得到第一个子节点(标签/文本)

元素节点

lastChild

得到最后一个子节点(标签/文本)

 

 

 

元素节点

getAttributeNode(attrName)

根据属性名标签的属性节点

 

    1. HTML DOM的增删改

对象类型

属性/方法

说明

文档节点

createElement(tagName)

创建一个新的元素节点对象

文档节点

createTextNode(text)

创建一个文本节点对象

 

 

 

元素节点

appendChild(node)

将指定的节点添加为子节点

元素节点

insertBefore(new,target)

在指定子节点的前面插入新节点

 

 

 

元素节点

replaceChild(new, old)

用新节点替换原有的旧子节点

元素节点

removeChild(childNode)

删除指定的子节点

元素节点

setAttribute(name, value)

为标签添加一个属性

元素节点

removeAttribute(name)

删除指定的属性

 

 

 

元素节点

innerHTML

向标签中添加一个标签

 

 

 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>HTML DOM编程测试</title>

<style type="text/css">

ul {

    list-style-type: none;

}

 

li {

    border-style: solid;

    border-width: 1px;

    padding: 5px;

    margin: 5px;

    background-color: #99ff99;

    float: left;

}

 

.out {

    width: 400px;

    border-style: solid;

    border-width: 1px;

    margin: 10px;

    padding: 10px;

    float: left;

}

</style>

</head>

<body>

    <div class="out">

       <p>你喜欢哪个城市?</p>

       <ul id="city">

           <li id="bj" name="BeiJing">北京</li>

           <li>上海</li>

           <li id="dj">东京</li>

           <li>首尔</li>

       </ul>

       <br>

       <div id="inner"></div>

    </div>

</body>

</html>

 

  1. 事件监听
    1. 添加事件监听
  1. 页面的很多交互操作都是通过在一些页面视图上添加事件监听的方式来实现的
  2. 给标签添加事件属性

<button onclick="showMsg()">Click Me</button>

 

  1. 给标签对象添加事件属性

var btnEle = document.getElementById("btn");

btnEle.onclick = function(){

alert("Thank you, baby!!!!!");

};

 

    1. 事件回调函数之this
  1. 在事件函数的回调函数中, this代表发生事件所有的视图对象, 经常利用this来获取数据
  1. 练习
    1. 练习1: 爱好选择
  1. 技术点:
    1. DOM节点的查找
    2. 添加事件监听
    3. checkbox的操作
    4. 逻辑能力
    5. 重构能力
  2. 效果图

  1. 页面

<body>

    <form method="post" action="">

       你爱好的运动是?

<input type="checkbox" id="checkedAll_2"/>全选/全不选

       <br/>

        <input type="checkbox" name="items" value="足球"/>足球

       <input type="checkbox" name="items" value="篮球"/>篮球

       <input type="checkbox" name="items" value="羽毛球"/>羽毛球

       <input type="checkbox" name="items" value="乒乓球"/>乒乓球

       <br/>

        <input type="button" id="CheckedAll" value="全 选"/>

        <input type="button" id="CheckedNo" value="全不选"/>

        <input type="button" id="CheckedRev" value="反 选"/>

   

       <input type="submit" id="send" value="提 交"/>

    </form>

</body>

 

    1. 练习2: 员工管理
  1. 技术点:
    1. DOM节点的CRUD操作
    2. 添加事件监听
    3. 逻辑能力
    4. 重构能力
  2. 效果图

  1. 页面

 

<center>

    <br> <br> 添加新员工 <br> <br> name: <input type="text"

       name="name" id="name" />&nbsp;&nbsp; email: <input type="text"

       name="email" id="email" />&nbsp;&nbsp; salary: <input type="text"

       name="salary" id="salary" /> <br> <br>

    <button id="addEmpButton">Submit</button>

    <br> <br>

    <hr>

    <br> <br>

    <table  border="1" cellpadding="5" cellspacing=0>

       <tbody id="employeetable">

           <tr>

              <th>Name</th>

              <th>Email</th>

              <th>Salary</th>

              <th>&nbsp;</th>

           </tr>

           <tr>

              <td>Tom</td>

              <td>tom@tom.com</td>

              <td>5000</td>

              <td><a href="deleteEmp?id=001">Delete</a></td>

           </tr>

           <tr>

              <td>Jerry</td>

              <td>jerry@sohu.com</td>

              <td>8000</td>

              <td><a href="deleteEmp?id=002">Delete</a></td>

           </tr>

           <tr>

              <td>Bob</td>

              <td>bob@tom.com</td>

              <td>10000</td>

              <td><a href="deleteEmp?id=003">Delete</a></td>

           </tr>

       </tbody>

    </table>

</center>

 

 

 

 

 

采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值