JS 事件

一. 事件流

1.   事件流:描述的是从页面中接收事件的顺序。

2.   事件冒泡:( IE 的事件流)即事件开始时由最具体的元素(文档中嵌套层级最深)接收,然后逐级向上传播到较为不具体的节点(文档)。

3.   事件捕获:不太具体的节点较早接收到事件,而最具体的节点应该最后接收到事件。

4.   DOM 事件流

三个阶段:事件捕获阶段(为截获事件提供机会)、目标阶段(实际的目标接收到事件)和事件冒泡阶段(可以在此阶段对事件做出响应)。


 

二. 事件处理

1.  HTML 事件处理程序

<input type=”button” value=”click” onclick=”alert(‘clicked’);” />

 

缺点: ① 存在时差问题。即触发的事件时,事件处理程序尚不具备执行条件。

            ② HTMLJavascript 代码紧密耦合。如需改动,需要改动两处。

 

2.  DOM0 级事件处理程序

var btn = document.getElementById(“myBtn”);
btn.onclick = function(){
    alert(“clicked”);
}

此方式指定的事件处理程序认为是元素的方法,因此,事件处理程序的作用域为元素本身。

btn.onclick = null; // 删除事件处理程序 
 

 

3.  DOM2 级事件处理程序

addEventListener()   // 指定事件处理程序
removeEventListener()   // 删除事件处理程序 

params: 捕获的事件名、事件处理程序函数、布尔值( true: 在捕获阶段调用事件处理程序; false :在冒泡阶段调用事件处理程序)

var btn = document.getElementById(“myBtn”);
btn.addEvenetListener(“click”, function(){ alert(this.id); }, false);
btn.addEvenetListeber(“click”, function(){ alert(“hello world”; )}, false);

事件处理程序的作用域为 window 对象,而不是指元素本身。

为同一按钮添加多个事件处理程序时,会按照添加他们的顺序触发,如上例,会先显示元素 id ,然后显示 ”hello world”

通过 addEvenetListener() 添加的事件处理程序只能使用 removeEventListener() 来移除,移除时传入的参数与添加处理程序时使用的参数相同,即通过 addEventListener() 添加的匿名函数将无法移除。

 

多数情况下,将事件处理程序添加到事件流的冒泡阶段,这样可以最大限度的兼容各种浏览器。

 

4.   IE 事件处理程序

attachEvent()  // 指定事件处理程序
detachEvent()  // 移除事件处理程序 

params :事件处理程序名称、事件处理程序函数( IE 只支持事件冒泡)

var btn = document.getElementById(“myBtn”);
btn.attachEvent(“onclick”, function(){ alert(“clicked”); });
btn.attachEvent(“onclick”, function(){ alert(“hello world”); });

为同一元素添加了多个不同的事件处理程序,与 DOM 方法不同,这些事件处理程序是以添加它们相反的顺序触发。如上例,会先显示 ”hello world”, 然后显示 ”clicked”

通过 attachEvent() 添加的事件处理程序只能使用 detachEvent() 来移除,移除时传入的参数与添加处理程序时使用的参数相同,即通过 attachEvent() 添加的匿名函数将无法移除。

 

 

1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值