This commit is contained in:
rou
2026-03-23 14:56:04 +08:00
parent 00d3c9e4c6
commit 1071f4db05
27 changed files with 549 additions and 50 deletions

View File

@@ -20,3 +20,85 @@ function fakeLoadExtraLessons() {
// 3. 点击列表项时切换 done 状态
// 4. 提交表单时阻止默认提交,并新增课程
// 5. 点击加载按钮时显示加载状态,并把异步返回的课程追加到列表
/* 一个课程列表区域
- 一个表单区域
- 一个添加课程的交互
- 一个点击课程切换完成状态的交互
- 一个异步加载提示或远程数据模拟
- 清晰的状态文案更新*/
const page = document.querySelector(".page")
const hero = document.querySelector("hero")
const text = document.getElementById("status-text")
const panel = document.querySelector(".panel")
const btn = document.getElementById("load-btn")
const list = document.getElementById("lesson-list")
const formPanel = document.querySelector(".form-panel")
const lessonForm = document.getElementById("lesson-form")
const lessonInput = document.getElementById("lesson-input")
function renderLessons() {
lessons.forEach(item => {
const li = document.createElement("li")
li.classList.add("li")
li.setAttribute("title", item.title)
li.setAttribute("done", item.done)
li.textContent = `
标题:${item.title}
状态:${item.done}`
list.appendChild(li)
})
}
renderLessons()
//event.target,closest,
list.addEventListener("click", function (event) {
const a = event.target.closest(".li")
if (a) {
a.textContent = `
标题:${a.title}
状态:${!a.done}`
a.done = !a.done
}
})
lessonForm.addEventListener("submit", function (event) {
event.preventDefault()
const c = document.createElement("li")
const d = lessonInput.value.trim()
c.textContent = `
标题:${d}
状态true`
c.setAttribute("title", d)
c.setAttribute("done", true)
c.classList.add("li")
lessonInput.value = ""
list.appendChild(c)
})
async function load() {
text.textContent = "加载中"
text.innerHTML = ""
try {
const s = await fakeLoadExtraLessons()
text.textContent = "加载完成"
s.forEach(item => {
const li = document.createElement("li")
li.classList.add("li")
li.setAttribute("title", item.title)
li.setAttribute("done", item.done)
li.textContent = `
标题:${item.title}
状态:${item.done}`
list.appendChild(li)
})
} catch (error) {
text.textContent = "加载失败"
}
}
btn.addEventListener("click", load)