From 38e9cd98cf688715beee24038b2b856c9d975275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E8=89=AF=E6=B6=9B?= <12071381+shiliangtao@user.noreply.gitee.com> Date: Mon, 11 Dec 2023 23:37:15 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 石良涛 <12071381+shiliangtao@user.noreply.gitee.com> --- ...6\344\271\246\347\256\241\347\220\206 .md" | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 "20 \347\237\263\350\211\257\346\266\233/20231211 \345\233\276\344\271\246\347\256\241\347\220\206 .md" diff --git "a/20 \347\237\263\350\211\257\346\266\233/20231211 \345\233\276\344\271\246\347\256\241\347\220\206 .md" "b/20 \347\237\263\350\211\257\346\266\233/20231211 \345\233\276\344\271\246\347\256\241\347\220\206 .md" new file mode 100644 index 0000000..af0eac2 --- /dev/null +++ "b/20 \347\237\263\350\211\257\346\266\233/20231211 \345\233\276\344\271\246\347\256\241\347\220\206 .md" @@ -0,0 +1,142 @@ +### 作业 + +```js +/** + * 目标1:渲染图书列表 + *  1.1 获取数据 + *  1.2 渲染数据 + */ +const tbody = document.querySelector('.list'); +// 通用的外号 +const creator = '大帅哥'; +// 封装一个先获取数据,再渲染数据的函数 +function render() { + axios({ + url: 'https://hmajax.itheima.net/api/books', + params: { + creator: creator + } + }).then(result => { + // console.log(result); + const bookList = result.data.data; + const trHtml = bookList.map((item, i) => { + const { id, author, bookname, publisher } = item + return ` + + ${i + 1} + ${bookname} + ${author} + ${publisher} + + 删除 + 编辑 + + + ` + }).join('') + // console.log(trHtml); + tbody.innerHTML = trHtml; + }) +} +// 打开网页就得先调用一次函数 +render(); +// 实现添加事件 +const form = document.querySelector('.add-form'); +// 为了控制添加的弹窗,先获取 +const addModalBox = document.querySelector('.add-modal'); +const addModal = new bootstrap.Modal(addModalBox); +// 给保存添加点击事件 +const add = document.querySelector('.add-btn') +add.addEventListener('click', () => { + // 采集数据 + const book = serialize(form, { hash: true, empty: true }) + console.log(book); + // 将数据用axios调用接口,提交给服务器 + axios({ + url: 'https://hmajax.itheima.net/api/books', + method: 'post', + data: { + creator, + ...book + } + }).then(result => { + // console.log(result); + // 清空表单 + form.reset(); + // 关闭弹窗 + addModal.hide(); + // 重新获取列表并渲染 + render(); + }) + +}) + +// 删除事件 +tbody.addEventListener('click', (e) => { + // console.log(e.target); + if (e.target.classList.contains('del')) { + console.log('删除'); + // 获取删除id + // console.log(e.target.parentNode.dataset.id); + const id = e.target.parentNode.dataset.id + axios({ + url: `https://hmajax.itheima.net/api/books/${id}`, + method: 'delete', + + }).then(result => { + console.log(result) + // 重新渲染 + render() + }) + } +}) + +// 编辑图书功能 +tbody.addEventListener('click', (e) => { + if (e.target.className === 'edit') { + // console.log('修改'); + // 创建一个弹窗的对象 + const form = document.querySelector('.edit-form') + // 获取弹窗 + const edit = document.querySelector('.edit-modal') + const editModal = new bootstrap.Modal(edit) + editModal.show() + // 获取id + const id = e.target.parentNode.dataset.id; + // 通过id调用接口 查询对应的图书数据 + axios({ + url: 'https://hmajax.itheima.net/api/books/' + id + }).then(result => { + // console.log(result.data.data); + const book = result.data.data; + const { id, author, bookname, publisher } = book; + // 将图书馆数据显示到表单 + form.querySelector('.id').value = id; + form.querySelector('.bookname').value = bookname; + form.querySelector('.author').value = author; + form.querySelector('.publisher').value = publisher; + }) + + // 修改按钮 + const editbtn = document.querySelector('.edit-btn'); + editbtn.addEventListener('click', () => { + // 采集数据 + const book = serialize(form, { hash: true, empty: true }) + console.log(book); + // 提交接口 + axios({ + url: 'https://hmajax.itheima.net/api/books/' + id, + method: 'put', + data:{ + creator, + ...book + } + }).then(result => { + editModal.hide() + render() + // console.log(result); + }) + }) + } +}) +``` -- Gitee