您的位置:首页 > 健康 > 美食 > 网站排名不稳定怎么办_江苏建设教育_百度站长平台网页版_百度网页版进入

网站排名不稳定怎么办_江苏建设教育_百度站长平台网页版_百度网页版进入

2025/3/22 16:20:20 来源:https://blog.csdn.net/sinbowper/article/details/146394243  浏览:    关键词:网站排名不稳定怎么办_江苏建设教育_百度站长平台网页版_百度网页版进入
网站排名不稳定怎么办_江苏建设教育_百度站长平台网页版_百度网页版进入

目录

  • 图书列表渲染功能描述
  • 图书列表渲染实现步骤
      • 1.准备工作
      • 2.数据渲染
      • 3.数据添加
      • 4.数据删除
      • 5.数据编辑
  • 完整实例代码

图书列表渲染功能描述

  1. 页面刷新时,列表自动渲染图书列表数据
  2. 已渲染的图书列表数据可以进行编辑和删除功能
  3. 点击添加按钮,可以添加图书信息,并将其渲染到页面上

图书列表渲染实现步骤

1.准备工作

了解axios函数的基本使用
引入

	<script src="https://cdn.bootcdn.net/ajax/libs/axios/1.2.0/axios.min.js"></script>

使用

	axios({url:'请求网址',method:'请求方式',		//默认为getparams:{}				//get请求参数data:{}					//post请求参数})

了解bootstrap表单和formserialize的基本使用
引入

	<script src="./lib/form-serialize.js"></script>				//本地form-serialize引入<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/js/bootstrap.min.js">

使用

	const {结构的变量名称}=form-serialize('表单名',{hash:true,empty:true})			//hash为true将数据转换为哈希值,推荐使用。empty为true可以接受空值

准备合适的接口
自行准备

2.数据渲染

先从后台请求数据,将请求的数据映射到对应列表的位置上

    const list = document.querySelector('.list')			//渲染位置function addData() {						//封装渲染函数,要复用axios({url: 'http://hmajax.itheima.net/api/books',params: {					//保证数据请求格式正确creator: 'Tom'}}).then(res => {const arr = res.data.dataconst str = arr.map(item => {					//使用map映射return `<tr><td>${item.id}</td><td>${item.bookname}</td><td>${item.author}</td><td>${item.publisher}</td><td><span class="del">删除</span><span class="edit">编辑</span></td></tr>`})document.querySelector('.list').innerHTML = str					//将所得数据写入到指定位置})}addData()

实现效果
在这里插入图片描述

3.数据添加

给添加按钮绑定点击事件,当点击时,打开添加弹窗,自动收集弹窗中表单的数据,将其发送到服务器中,关闭添加弹窗,再渲染一遍数据

	const plusBtn = document.querySelector('.plus-btn')// 添加弹窗const addModal = document.querySelector('.add-modal')const aModal = new bootstrap.Modal(addModal)const addForm = document.querySelector('.add-form')plusBtn.addEventListener('click', () => {aModal.show()// 保存添加const addBtn = document.querySelector('.add-btn')addBtn.addEventListener('click', () => {const { bookname, author, publisher } = serialize(addForm, { hash: true, empty: true })const data = {bookname,author,publisher,creator: 'Tom'}axios({url: 'http://hmajax.itheima.net/api/books',method: 'post',data}).then(res => {aModal.hide()addForm.reset()					//添加结束后重置表单addData()})})})

实现效果
在这里插入图片描述

4.数据删除

利用事件委托给图书列表添加点击事件,当点击到删除按钮时,利用元素节点找到该列表的id值,拼接到url网址上

list.addEventListener('click', (e) => {						//使用事件委托绑定点击事件if (e.target.classList.contains('del')) {const id = e.target.parentNode.parentNode.children[0].innerHTMLaxios({url: `http://hmajax.itheima.net/api/books/${id}`,method: 'delete'}).then(res => {addData()})}...}

实现效果
在这里插入图片描述

5.数据编辑

利用事件委托,当点击到编辑按钮时,打开编辑弹窗,收集渲染列表的数据,并自动收集弹窗中表单的数据,将其发送到服务器中,关闭编辑弹窗,再渲染一遍数据

	  if (e.target.classList.contains('edit')) {const id = e.target.parentNode.parentNode.children[0].innerHTMLconst children = e.target.parentNode.parentNode.childrenconst bookname = children[1].innerHTML				//遍历列表,保证编辑框打开后存在数据const author = children[2].innerHTMLconst publisher = children[3].innerHTMLeModal.show()editForm.querySelector('input[name="bookname"]').value = booknameeditForm.querySelector('input[name="author"]').value = authoreditForm.querySelector('input[name="publisher"]').value = publishereditBtn.addEventListener('click', () => {const { bookname, author, publisher } = serialize(editForm, { hash: true, empty: true })const data = {bookname,author,publisher,creator: 'Tom'}axios({url: `http://hmajax.itheima.net/api/books/${id}`,method: 'put',data}).then(res => {eModal.hide()addData()editForm.reset()					//编辑结束后重置表单})})}

实现效果
在这里插入图片描述

完整实例代码

<!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>案例-图书管理</title><!-- 字体图标 --><link rel="stylesheet" href="https://at.alicdn.com/t/c/font_3736758_vxpb728fcyh.css"><!-- 引入bootstrap.css --><link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/css/bootstrap.min.css" rel="stylesheet"><!-- 核心样式 --><link rel="stylesheet" href="./css/index.css">
</head><body><!-- 主体区域 --><div class="container"><!-- 头部标题和添加按钮 --><div class="top"><h3>图书管理</h3><button type="button" class="btn btn-primary plus-btn" data-bs-toggle="modal" data-bs-target=".add-modal"> + 添加</button></div><!-- 数据列表 --><table class="table"><thead class="table-light"><tr><th style="width: 150px;">序号</th><th>书名</th><th>作者</th><th>出版社</th><th style="width: 180px;">操作</th></tr></thead><tbody class="list"></tbody></table></div><!-- 新增-弹出框 --><div class="modal fade add-modal"><!-- 中间白色区域 --><div class="modal-dialog"><div class="modal-content"><div class="modal-header top"><span>添加图书</span><button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="modal"></button></div><div class="modal-body form-wrap"><!-- 新增表单 --><form class="add-form"><div class="mb-3"><label for="bookname" class="form-label">书名</label><input type="text" class="form-control bookname" placeholder="请输入书籍名称" name="bookname"></div><div class="mb-3"><label for="author" class="form-label">作者</label><input type="text" class="form-control author" placeholder="请输入作者名称" name="author"></div><div class="mb-3"><label for="publisher" class="form-label">出版社</label><input type="text" class="form-control publisher" placeholder="请输入出版社名称" name="publisher"></div></form></div><div class="modal-footer btn-group"><button type="button" class="btn btn-primary" data-bs-dismiss="modal"> 取消 </button><button type="button" class="btn btn-primary add-btn"> 保存 </button></div></div></div></div><!-- 编辑-弹出框 --><div class="modal fade edit-modal"><!-- 中间白色区域 --><div class="modal-dialog"><div class="modal-content"><div class="modal-header top"><span>编辑图书</span><button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="modal"></button></div><div class="modal-body form-wrap"><!-- 编辑表单 --><form class="edit-form"><input type="hidden" class="id" name="id"><div class="mb-3"><label for="bookname" class="form-label">书名</label><input type="text" class="form-control bookname" placeholder="请输入书籍名称" name="bookname"></div><div class="mb-3"><label for="author" class="form-label">作者</label><input type="text" class="form-control author" placeholder="请输入作者名称" name="author"></div><div class="mb-3"><label for="publisher" class="form-label">出版社</label><input type="text" class="form-control publisher" placeholder="请输入出版社名称" name="publisher"></div></form></div><div class="modal-footer btn-group"><button type="button" class="btn btn-primary" data-bs-dismiss="modal"> 取消 </button><button type="button" class="btn btn-primary edit-btn"> 修改 </button></div></div></div></div><script src="https://cdn.bootcdn.net/ajax/libs/axios/1.2.0/axios.min.js"></script><script src="./lib/form-serialize.js"></script><script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/js/bootstrap.min.js"></script><!-- 核心逻辑 --><script>// 数据渲染
const list = document.querySelector('.list')
function addData() {axios({url: 'http://hmajax.itheima.net/api/books',params: {creator: 'Tom'}}).then(res => {const arr = res.data.dataconst str = arr.map(item => {return `<tr><td>${item.id}</td><td>${item.bookname}</td><td>${item.author}</td><td>${item.publisher}</td><td><span class="del">删除</span><span class="edit">编辑</span></td></tr>`})document.querySelector('.list').innerHTML = str})
}
addData()
// 数据添加
// 添加按钮
const plusBtn = document.querySelector('.plus-btn')
// 添加弹窗
const addModal = document.querySelector('.add-modal')
const aModal = new bootstrap.Modal(addModal)
const addForm = document.querySelector('.add-form')
plusBtn.addEventListener('click', () => {aModal.show()// 保存添加const addBtn = document.querySelector('.add-btn')addBtn.addEventListener('click', () => {const { bookname, author, publisher } = serialize(addForm, { hash: true, empty: true })const data = {bookname,author,publisher,creator: 'Tom'}axios({url: 'http://hmajax.itheima.net/api/books',method: 'post',data}).then(res => {aModal.hide()addForm.reset()addData()})})
})
// 删除数据
const editModal = document.querySelector('.edit-modal')
const eModal = new bootstrap.Modal(editModal)
const editBtn = document.querySelector('.edit-btn')
const editForm = document.querySelector('.edit-form')
list.addEventListener('click', (e) => {if (e.target.classList.contains('del')) {const id = e.target.parentNode.parentNode.children[0].innerHTMLaxios({url: `http://hmajax.itheima.net/api/books/${id}`,method: 'delete'}).then(res => {addData()})}//编辑数据if (e.target.classList.contains('edit')) {const id = e.target.parentNode.parentNode.children[0].innerHTMLconst children = e.target.parentNode.parentNode.childrenconsole.log(children)const bookname = children[1].innerHTMLconst author = children[2].innerHTMLconst publisher = children[3].innerHTMLeModal.show()editForm.querySelector('input[name="bookname"]').value = booknameeditForm.querySelector('input[name="author"]').value = authoreditForm.querySelector('input[name="publisher"]').value = publishereditBtn.addEventListener('click', () => {const { bookname, author, publisher } = serialize(editForm, { hash: true, empty: true })const data = {bookname,author,publisher,creator: 'Tom'}axios({url: `http://hmajax.itheima.net/api/books/${id}`,method: 'put',data}).then(res => {eModal.hide()addData()editForm.reset()})})}
})</script>
</body></html>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com