原生dom绑定事件
- 行内绑定
- 选择到元素添加事件
- 添加事件监听
示例:
<p onclick="console.log(1)">haha</p>
<p onclick="clikHandle(1)">haha</p>
function clikHandle(index) {
console.log(index)
}
<div class="pbox">
<p>haha</p>
</div>
document.querySelector('.pbox').onclick = function(e){
console.log(1)
console.log(this) // 当前绑定事件的标签
console.log(e) // 点击的事件对象
console.log(e.target) // 触发事件的元素
console.log(e.currentTarget) // 绑定事件的元素或这标签
}
document.querySelector('.pbox').addEventListener('click',(e)=>{
console.log(1)
console.log(this) // wndow
console.log(e) // 点击的事件对象
console.log(e.target) // 触发事件的元素
console.log(e.currentTarget) // 绑定事件的元素或这标签
})
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
document.querySelector('ul').onclick = function(e){
console.log(1)
console.log(e.target)
}
事件传播的流程:
事件捕获 (从大到小的过程)
目标源
冒泡阶段 (从小到大的过程)
示例:
window.addEventListener('click',()=>{
console.log('window--true')
},true)
window.addEventListener('click',()=>{
console.log('window--false')
},false)
document.querySelector('.box1').addEventListener('click',()=>{
console.log('box1--true')
},true)
document.querySelector('.box1').addEventListener('click',()=>{
console.log('box1--false')
},false)
document.querySelector('.box2').addEventListener('click',()=>{
console.log('box2--true')
},true)
document.querySelector('.box2').addEventListener('click',()=>{
console.log('box2--false')
},false)
document.querySelector('.box3').addEventListener('click',()=>{
console.log('box3--true')
},true)
document.querySelector('.box3').addEventListener('click',()=>{
console.log('box3--false')
},false)
ajax:
async javascript and xml;实现局部刷新的一门技术
在浏览器内有一个内置的核心对象 XMLHttpRequest
要使用核心对象:
- 实例化核心对象
- 建立链接 xhr.open(请求方式,请求地址,同步异步)
示例:流程
// 1. 实例化核心对象
let xhr = new XMLHttpRequest()
// 2. 建立链接
xhr.open('GET','https://api.it120.cc/small4/banner/list')
// 3. 发送请求 (可携带参数)
xhr.send()
// 4. 获取请求的数据
xhr.onreadystatechange = function(){
if(xhr.readyState==4 && xhr.status==200){
console.log(JSON.parse(xhr.response))
}
}
js随机数
Math.random() // 获取0-1的随机数
Math.abs() 求绝对值
Math.ceil() 向上取整
Math.floor() 向下取整
Math.round() 四舍五入
console.log(Math.abs(-1))
console.log(Math.round(0.6))
时间戳:
从1970年1-1 0时0分0秒 到目前为止的总秒数 单位毫秒
let numstr = 1663289891077
console.log(new Date(numstr))
setTimeout - 一段时间之后执行一次 setInterval 每隔一段时间之后执行一次
延时的时间不写,大概是4ms
示例:
setTimeout(()=>{
console.log(1)
},1000)
setInterval(()=>{
console.log(2)
},1000)
let _id = setTimeout(()=>{
console.log(1)
})
console.log(_id)
clearTimeout(_id)
let _id = setInterval(()=>{
console.log('haha')
},1000)
setTimeout(()=>{
clearInterval(_id)
},4000)