完整教程:Ajax-day2(图书管理)-弹框显示和隐藏

news/2025/9/21 8:34:49/文章来源:https://www.cnblogs.com/lxjshuju/p/19103165

Bootstrap 弹框

  • 图书管理-Bootsrap 弹框
  • (一)属性控制
    • 一、模板代码
    • 二、弹框模板
    • 三、bootsrap 的显示弹框属性
    • 完整代码
  • (二)JS 控制
    • 一、模板代码
    • 二、步骤


图书管理-Bootsrap 弹框

  1. Bootstrap 框架
  2. 渲染列表(查)
  3. 新增图书(增)
  4. 删除图书(删)
  5. 编辑图书(改)

(一)属性控制

功能:不离开当前页面,显示单独内容,供用户操作。

  1. 引入bootstrap.css 和 bootstrap.js

  2. 准备弹框标签,确认结构

  3. 通过自定义属性,控制弹框的显示隐藏

一、模板代码

(已引入 bootstrap 的 css 和 js 库)

<!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>Bootstrap 弹框</title><!-- 引入bootstrap.css --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet"></head><body><!--目标:使用Bootstrap弹框1. 引入bootstrap.css 和 bootstrap.js2. 准备弹框标签,确认结构3. 通过自定义属性,控制弹框的显示和隐藏--><button type="button" class="btn btn-primary">显示弹框</button><!-- 引入bootstrap.js --><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"></script></body></html>

二、弹框模板

Bootstrap Modal:https://www.getbootstrap.cn/docs/5.0/components/modal/

找到弹框模板,并copy代码:

在这里插入图片描述

<div class="modal" tabindex="-1"><div class="modal-dialog"><-- 弹框-内容 --><div class="modal-content"><-- 弹框-头部 --><div class="modal-header"><h5 class="modal-title">Modal title</h5><button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button></div><-- 弹框-身体 --><div class="modal-body"><p>Modal body text goes here.</p></div><-- 弹框-底部 --><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button><button type="button" class="btn btn-primary">Save changes</button></div></div></div></div>

可是我们把这一段代码加入后,页面中并没有出现弹框,是什么原因呢?
F12,找到弹框标签,查看样式:
发现 display:none;
在这里插入图片描述

在这里插入图片描述

取消勾选后,弹框出现啦!

bootstrap 的 modal 弹框:添加 model 类名(默认隐藏)

三、bootsrap 的显示弹框属性

<button data-bs-toggle="modal" data-bs-target="CSS选择器">显示弹框
</button>
<button data-bs-dismiss="modal">Close</button>

(1)显示弹框
给弹框标签加一个自定义类名“my-box”(就是我们刚刚引入的 bootstrap 弹框模板)

<div class="modal my-box" tabindex="-1">...</div>

显示弹框的效果(给按钮加入显示弹框的属性):

<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target=".my-box">显示弹框
</button>

alt+B——点击按钮——弹框出现~

(2)关闭弹框
找到”弹框-头部“的右上角关闭按钮,
加入关闭弹框的属性。(模板已经加入啦,我们就不用写啦~)
data-bs-dismiss="modal"

<-- 弹框-头部 --><div class="modal-header"><h5 class="modal-title">Modal title</h5><button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button></div>

找到弹框底部的”Close“按钮,加入关闭弹框的属性。
(模板也写好啦,我们也不用写啦~)

<-- 弹框-底部 --><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button><button type="button" class="btn btn-primary">Save changes</button></div>

完整代码

<!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>Bootstrap 弹框</title><!-- 引入bootstrap.css --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet"></head><body><!--目标:使用Bootstrap弹框1. 引入bootstrap.css 和 bootstrap.js2. 准备弹框标签,确认结构3. 通过自定义属性,控制弹框的显示和隐藏--><button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target=".my-box">显示弹框</button><!-- 弹框标签 --><div class="modal my-box" tabindex="-1"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Modal title</h5><button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button></div><div class="modal-body"><p>Modal body text goes here.</p></div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button><button type="button" class="btn btn-primary">Save changes</button></div></div></div></div><!-- 引入bootstrap.js --><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"></script></body></html>

(二)JS 控制

// 创建弹框对象
const modalDom = document.querySelector('CSS选择器')
const modal = new bootstrap.Modal(modalDom)
// 显示弹框
modal.show()
//隐藏弹框
modal.hide()

一、模板代码

<!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>Bootstrap 弹框</title><!-- 引入bootstrap.css --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet"></head><body><!--目标:使用JS控制弹框,显示和隐藏1. 创建弹框对象2. 调用弹框对象内置方法.show() 显示.hide() 隐藏--><button type="button" class="btn btn-primary edit-btn">编辑姓名</button><div class="modal name-box" tabindex="-1"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">请输入姓名</h5><button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button></div><div class="modal-body"><form action=""><span>姓名:</span><input type="text" class="username"></form></div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button><button type="button" class="btn btn-primary save-btn">保存</button></div></div></div></div><!-- 引入bootstrap.js --><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"></script></body></html>

二、步骤

1.创建弹框对象

<script>const modalDom = document.querySelector('.name-box')const modal = new bootstrap.Modal(modalDom)</script>

2.显示和隐藏弹框(事件监听)

// 编辑姓名->点击->弹框显示
document.querySelector('.edit-btn').addEventListener
('click',() =>
{
// 2.显示弹框
modal.show()
})
// 保存->点击->弹框隐藏
document.querySelector('.save-btn').addEventListener
('click',() =>
{
// 隐藏弹框
modal.hide()
})

3.在显示弹框之前,赋予默认姓名;
在隐藏弹框之前,获取姓名并打印

<script>// 1.创建弹框对象const modalDom = document.querySelector('.name-box')const modal = new bootstrap.Modal(modalDom)// 编辑姓名->点击->赋予默认姓名->弹框显示document.querySelector('.edit-btn').addEventListener('click',() =>{document.querySelector('.username').value = '默认姓名'// 2.显示弹框modal.show()})// 保存->点击->获取姓名并打印->弹框隐藏document.querySelector('.save-btn').addEventListener('click',() =>{const username = document.querySelector('.username').valueconsole.log('模拟把姓名保存到服务器上:',username)// 隐藏弹框modal.hide()})</script>

在这里插入图片描述

在这里插入图片描述

点击”保存“
在这里插入图片描述
控制台输出啦~

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

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

相关文章

实用指南:C语言基础【20】:指针7

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

civil 3d com api 帮助文档

以前很容易搜到, 不知为什么现在搜不到了。 Getting Started

完整教程:【教程4>第8章>第28节】OFDM完整通信链路项目FPGA开发22——提取导频

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:万字详解架构设计:业务架构、应用架构、数据架构、技术架构、单体、分布式、微服务都是什么?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

WebSockets与Socket.io渗透测试实战指南

本文深入探讨如何通过降级WebSocket通信至HTTP协议实现安全测试,涵盖Socket.io传输机制滥用、协议升级中断技术及Burp Suite高级会话管理配置,提供可实操的渗透测试方法。如何渗透测试WebSockets与Socket.io Ethan R…

深入解析:spring boot3.0整合rabbitmq3.13

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:VLAN划分——TRUNK

完整教程:VLAN划分——TRUNKpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

现代操作系统-音频处理技术1 Linux驱动底层

应用数学基础: 香农-奈奎斯特采样定理 角速度倒数是频率; 采样一段最大角速度为ω的信息,理想状态下需要2ω的速度才能完全采样,否则就会产生混叠Aliasing(即较高频被对称采样到较低频段),而限制于前后端,一般…

mcp-server-chart chart mcp 服务

mcp-server-chart chart mcp 服务基于antv 的mcp 服务,支持25+ charts 的生成,对于图表的开发还是挺方便的,对于图表的渲染基于了ssr,同时官方还提供了额一个示例实现(ssr 转换为图片) 简单试用安装npm install …

元推理:人和事物,都是针对性的存在着与必然因果,残缺之美

元推理:人和事物,都是针对性的存在着与必然因果,残缺之美ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891▮ 推理就绪:基于自然辩证法数学形式化系统启动因果律算符 命题是穿透表象的终极洞察。所言的不…

人和事物,都是针对性的存在着与必然因果,残缺之美

人和事物,都是针对性的存在着与必然因果,残缺之美ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891▮ 推理就绪:基于自然辩证法数学形式化系统启动因果律算符 命题是穿透表象的终极洞察。所言的不是诗意的…

ArcEngine10.2中融合工具Dissolve的bug

问题描述 使用AE调用Dissolve的GP工具时,在10.2版本中发现一个bug,当融合字段dissolve_field不填任何值,执行时不报错也不结束,感觉似乎进入某种死循环。1 string inFc = @"D:\Data\Test\新建文件地理数据库.…

Linux驱动适配I2C/SPI例子

栗子: TI的PCM3060 /sound/soc/codecs/pcm3060-i2c.c /sound/soc/codecs/pcm3060-spi.c /sound/soc/codecs/pcm3060.c 主驱动 /sound/soc/codecs/pcm3060.h 导出一个probe符号给iic/spi probe时传入spi_client/i2c_cl…

[重要] PySimpleGU控件函数用法整理

以下是基于PySimpleGUI 4.60.5版本的控件函数用法演示示例整理,按功能分类并编号说明: 一、基础控件Text(文本显示) import PySimpleGUI as sg layout = [[sg.Text(欢迎使用PySimpleGUI, key=-TEXT-, font=(Arial,…

使用XState测试分布式微服务的完整指南

本文介绍了如何使用XState库建模微服务工作流,通过状态机简化测试流程,提升测试覆盖率,并利用声明式状态机实现可视化调试,适用于订单处理等分布式场景。测试分布式微服务使用XState 分布式微服务架构带来了可扩展…

含“华”量超高的奥迪,卖爆了

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087奥迪转型,有点狠。没有四环标,但有隐藏式门把手,电子外后视镜,…

某些外审专家的意见,真是臭不可闻

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087常在网上看到有学者抱怨,外审意见就是一坨翔! 每次看到这样的话,…

智元首次明确七人合伙人团队

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 35469554100490879月19日,第一财经记者在智元官网发现,官网已经上架了“合伙人团队…

大模型赋能的具身智能:自主决策和具身学习技术最新综述

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 具身智能(Embodied AI)被视为通往通用人工智能(AGI)的关键路径…

ST首批中国产MCU,价格曝光

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087去年十一月底,欧洲芯片大厂意法半导体STMicroelectronics在投资者…