新闻中心
从子元素的父元素中获取另一个子元素的内容

本文旨在解决从一个元素的父元素中访问其兄弟元素内容的问题,尤其是在动态生成的列表项中删除特定任务时。我们将探讨如何通过已知的子元素(如删除按钮)定位到其父元素,并准确获取目标兄弟元素(包含任务内容)的内容,从而实现对数据的高效操作。
在Web开发中,经常需要操作DOM元素,特别是当页面结构动态生成时。一个常见的场景是,当用户点击一个元素(比如删除按钮)时,需要访问其父元素下的其他子元素,例如获取列表项中的任务内容。本文将详细介绍如何通过J*aScript实现这一功能,并提供一个实际的待办事项列表的例子。
获取兄弟元素内容的方法
假设我们有如下HTML结构:
<li class="task">
<div class="left">
<input type="checkbox" class="box" />
<p class="content">待办事项内容</p>
</div>
<button class="btn delete">
<i class="fa-solid fa-trash-can"></i>
</button>
</li>我们的目标是,当点击.delete按钮时,获取.content元素中的文本内容。以下是一种实现方法:
获取父元素引用: 首先,通过event.target.parentElement或直接使用已知的父元素引用(如btn.parentElement)获取到父元素(.task)。
使用querySelector定位兄弟元素: 然后,使用parentElement.querySelector('.content')在父元素内部查找类名为.content的元素。
获取文本内容: 最后,通过.textContent或.innerText属性获取该元素的文本内容。
小爱开放平台
小米旗下小爱开放平台
291
查看详情

以下是修改后的deleteBtn函数示例:
function deleteBtn() {
deleteHTML.forEach(btn => {
btn.addEventListener("click", () => {
console.log("delete");
btn.parentElement.style.display = "none";
// 正确获取.content元素
let p = btn.parentElement.querySelector('.content');
console.log(p.textContent); // 输出:待办事项内容
// 在此处可以进行后续操作,如从tasks数组中删除对应的任务
if (tasks.length < 1) {
console.log("remove background");
tasksHTML.classList.remove("background");
}
});
});
}代码解释:
- btn.parentElement.querySelector('.content'):这行代码首先获取btn(删除按钮)的父元素,然后使用querySelector在该父元素内部查找类名为.content的元素。
- p.textContent:这行代码获取找到的.content元素的文本内容。
完整示例:待办事项列表
以下是一个完整的待办事项列表示例,包含添加、删除任务的功能:
<!DOCTYPE html>
<html>
<head>
<title>待办事项列表</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" integrity="sha512-9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<style>
.tasks {
list-style: none;
padding: 0;
}
.task {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px;
border-bottom: 1px solid #eee;
}
.left {
display: flex;
align-items: center;
}
.content {
margin-left: 10px;
}
.delete {
background-color: #f44336;
color: white;
border: none;
padding: 5px 10px;
cursor: pointer;
}
</style>
</head>
<body>
<h1>待办事项列表</h1>
<form>
<input type="text" class="task-input" placeholder="添加新任务">
<button type="submit" class="submit">添加</button>
</form>
<ul class="tasks"></ul>
<script>
var tasks = [];
const form = document.querySelector("form");
const formInput = document.querySelector(".task-input");
const tasksHTML = document.querySelector(".tasks");
form.addEventListener("submit", (event) => {
event.preventDefault(); // 阻止表单默认提交行为
const taskText = formInput.value.trim();
if (taskText !== "") {
addTask(taskText);
formInput.value = "";
}
});
function addTask(taskText) {
const task = {
id: Date.now(), // 使用时间戳生成唯一ID
text: taskText,
done: false
};
tasks.push(task);
renderTasks();
}
function renderTasks() {
tasksHTML.innerHTML = ""; // 清空列表
tasks.forEach(task => {
const li = document.createElement("li");
li.classList.add("task");
li.innerHTML = `
<div class="left">
<input type="checkbox" class="box" ${task.done ? 'checked' : ''} data-id="${task.id}" />
<p class="content">${task.text}</p>
</div>
<button class="btn delete" data-id="${task.id}">
<i class="fa-solid fa-trash-can"></i>
</button>
`;
tasksHTML.appendChild(li);
});
// 添加删除按钮事件监听器
const deleteButtons = document.querySelectorAll(".delete");
deleteButtons.forEach(button => {
button.addEventListener("click", () => {
const taskId = parseInt(button.dataset.id);
deleteTask(taskId);
});
});
// 添加复选框事件监听器
const checkboxes = document.querySelectorAll(".box");
checkboxes.forEach(checkbox => {
checkbox.addEventListener("change", () => {
const taskId = parseInt(checkbox.dataset.id);
toggleTask(taskId);
});
});
}
function deleteTask(taskId) {
tasks = tasks.filter(task => task.id !== taskId);
renderTasks();
}
function toggleTask(taskId) {
tasks = tasks.map(task => {
if (task.id === taskId) {
task.done = !task.done;
}
return task;
});
renderTasks();
}
renderTasks(); // 初始渲染
</script>
</body>
</html>注意事项:
- 避免硬编码选择器: 尽量避免在J*aScript代码中硬编码CSS选择器。如果HTML结构发生变化,代码可能需要修改。
- 使用事件委托: 如果列表项是动态添加的,使用事件委托可以提高性能。将事件监听器添加到父元素上,然后根据事件目标来确定要操作的元素。
- 唯一标识符: 为每个列表项添加一个唯一的标识符(例如ID),方便在数据结构中查找和删除对应的任务。 在上面的示例中,我们使用Date.now()生成唯一的ID。
- 数据同步: 确保DOM结构和数据结构(例如tasks数组)保持同步。在删除或修改任务时,同时更新DOM和数据结构。
总结
本文介绍了如何通过J*aScript从一个元素的父元素中获取另一个子元素的内容。通过获取父元素引用,并使用querySelector方法,可以方便地定位到目标子元素,并获取其文本内容。在实际应用中,需要注意避免硬编码选择器、使用事件委托、使用唯一标识符以及保持DOM结构和数据结构同步。 通过这些技巧,可以更有效地操作DOM元素,构建动态和交互性强的Web应用程序。
以上就是从子元素的父元素中获取另一个子元素的内容的详细内容,更多请关注其它相关文章!
# javascript
# 应用程序
# 显示效果
# 其父
# 从子
# 单选框
# 选择器
# 小爱
# 表单
# 数据结构
# c
# cdn
# ai
# ssl
# app
# 编码
# ajax
# js
# html
# java
# css
# web应用程序
# 白下区网络推广招聘网站
# 内贸推广营销方案怎么写
# 延安网站seo优化推广
# 免费开源的网站建设系统
# seo优化外包网站推广方法大全
# 济南seo学习
# 严陵镇塔山村网站建设
# 沈阳网站设计优化案例
# 岳阳网站建设详细策划
# 唐山网站推广制作
# 这行
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
我的世界官方游戏入口 我的世界官网平台直达链接
谷歌google账号怎么注册账号 谷歌账号注册官方流程
小米Civi 4录制视频过暗_小米Civi 4亮度优化
在J*a中如何使用BigDecimal进行高精度计算_BigDecimal类应用指南
支付宝如何管理隐私设置_支付宝隐私保护的配置技巧
Spring Boot嵌入式服务器与J*a EE:功能支持深度解析
顺丰国际快递查询 国际件官方查询入口
支付宝如何设置安全保护_支付宝安全设置的全面教程
Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】
《马克思佩恩3》早期版本曝光 UI设计曾多次调整!
如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!
抖音未来赚钱的新趋势 2025年值得关注的变现风口分析
sublime怎么格式化代码_sublime代码美化与一键排版插件配置
漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
b站怎么看视频的弹幕数量_b站弹幕数量查看方法
漫蛙2在线漫画入口 漫蛙正版漫画网页版直达
Python多线程中正确使用sigwait处理SIGALRM信号
2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享
现代化 SciPy 一维插值:interp1d 的替代方案与最佳实践
qq游戏网页版直接玩_qq游戏免下载快速入口
uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验
Android Studio计算器C键功能异常排查与修复教程
微博网页版官方账号登录 微博网页版内容浏览使用指南
包子漫画官方网站在线链接-包子漫画在线阅读平台主页地址
蛙漫画网页版全站入口 蛙漫热门作品免费浏览
cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法
深入理解J*a链表中的IPosition接口与使用
《燕云十六声》两周内达九百万玩家!位居畅销榜第五
12306选座怎么选到特殊座位_12306特殊座位选择注意事项
KFC早餐时段怎么领特惠代码_KFC早餐订餐优惠代码获取与使用说明
绝地鸭卫平a核爆刀流玩法攻略
俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口
QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台
打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门
Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南
Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法
快手极速版在线观看 官方网页版登录地址
抖音网页版快捷访问 抖音网页版网页版入口操作教程
J*aScript异步迭代器_j*ascript异步遍历
2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南
在VS Code中配置和运行Dart程序的完整步骤
曝R星经典之作开发图 设计简陋但信息密集!
Mac怎么锁定备忘录_Mac备忘录加密设置教程
极兔快递快件信息查询系统 极兔快递官网运单号追踪
css元素hover动画延迟生效怎么办_使用animation-delay调整触发时间
Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法
实现分段式页面滚动导航:CSS与J*aScript教程
蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址


2025-10-25
浏览次数:次
返回列表