发表于: 2020-08-02 00:46:50
1 1204
今天 买了本 算法书 。学了 二分查找法。
感觉 这本书上 逻辑 写的 非常棒。
guess 猜
low 最小 小标
high最大下标
mid = (low + high) / 2 中间 下标
昨天的日报。
在比较 复杂的 逻辑 判断时候 变量名 一定要有意义 如 guess = list[mid] 用 guess == target guess > target guess < target
多加个变量 不要省。
昨天 学了 下 JS 事件
JS 事件 3个阶段
(1)事件捕获 阶段
( 2 ) 事件 目标 阶段
(3)事件 冒泡 阶段
看图理解 JS 事件 如果 不看图 直接 写代码 想 想 倒 都想不清楚。很多教程很垃圾。有时 光文字 是 解释不清楚 就算解释清楚 别人也听不全懂。
就上面 说的 JS 事件 分 3个阶段 其实 就是 一条线 画一个 圆圈 捕获 与 冒泡 不是 相互独立的 他们3个 是一个 连冠 的 “循环” 就是 1个整体。
useCapture:true 捕获执行 false 冒泡执行 可以先这样理解 捕获执行 比 冒泡执行 在时间上 要早一点。
参数 | 描述 |
---|---|
event | 必须。字符串,指定事件名。 注意: 不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。 提示: 所有 HTML DOM 事件,可以查看我们完整的 HTML DOM Event 对象参考手册。 |
function | 必须。指定要事件触发时执行的函数。 当事件对象会作为第一个参数传入函数。 事件对象的类型取决于特定的事件。例如, "click" 事件属于 MouseEvent(鼠标事件) 对象。 |
useCapture | 可选。布尔值,指定事件是否在捕获或冒泡阶段执行 可能值:
|
<body>
<div id="box" style="widht:200px;height:200px;"></div>
</body>
window.onload = function(e) {
var box=document.querySelector('#box');
// 给 body添加 2个 事件 一个捕获 一个冒泡 执行 !!先写冒泡
// 给 div 添加 2个 事件 一个冒泡 一个捕获 执行 !!先写冒泡
document.body.addEventListener('click', function(){
alert('body 冒泡阶段 执行');
},false);
document.body.addEventListener('click', function(){
alert('body 捕获阶段 执行');
},true);
box.addEventListener('click', function(){
alert('box 冒泡阶段 执行');
},false);
box.addEventListener('click', function(){
alert('box 捕获阶段 执行');
},true);
}
这里 先 理解 一下 什么事 目标阶段 谁是目标阶段 。
如果 你 在 box 点击 在 dom 里面 window > document > body > div#box 这一串 最后一个 box就是 目标
如果 你在 body 点 box 下面 远点 点 加个 css html,body{height:100%}
这一串后面 window > document > body 最后一个 body 就是 目标
事件捕获 和冒泡阶段 是 先捕获 后冒泡 目标阶段 就 不管了 也就是 addEventListenr(1,2, 3==true==fase) 第3个参数 不管了。
addEventListenr 可以 添加 很多事件 加在前面 先执行 后面 后执行。
这就是 目标阶段 执行 顺序
如果 点击了 div#box 先是 body 捕获(1个事件) 到 div#box 目标 (2个事件)到 body 冒泡(1个事件) 就是这么 一个 圈上到 关系。
防止冒泡和捕获 ==》 停止事件 再 圈上继续传 往下收不到 回来 也 没有。
w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true·
jQuery 事件里面 return false; 还会 防止冒泡和捕获
e.preventDefault 阻止默认行为
return false;和e.preventDefault; 看着有点 作用 相同 。也没 搞明白 。
评论