日期对象
实例化
ECMAScript 中内置了获取系统时间的对象 Date,使用 Date 时与之前学习的内置对象 console 和 Math 不同,它需要借助 new 关键字才能使用
<script>
//日期对象,掌握日期对象,可以让网页显示日期
//实例化 new
//得到当前时间
const d1=new Date()
console.log(d1);
//字符串 指定时间日期
const d2=new Date('2022-5-1 6:6:6' )
console.log(d2);
//数字制定日期时间
const d3=new Date(2022,1,1,6,6,6)
console.log(d3);
// console.log(d1.toLocaleDateString() );当地时间
</script>
常见的日期对象
const re=n.getFullYear() //获取年份
const re=n.getMonth()+1//获取月份 月份要加1
const re =n.getDate ()//获取日期
const re=n.getDay() //获取星期
const re =n.getHours()//获取小时
const re=n.getMinutes()//获取分钟
const re =n.getSeconds()//获取秒数
<script>
//获得日期对象
const n=new Date()
//使用方法
// const re=n.getFullYear() //获取年份
// const re=n.getMonth()+1//获取日期
// const re =n.getDate ()//获取日期
// const re=n.getDay() //获取星期
// const re =n.getHours()//获取小时
// const re=n.getMinutes()//获取分钟
// const re =n.getSeconds()//获取秒数
console.log(re);
//set 设置
n.setFullYear(2222)
console.log(n);
// console.log(date.getFullYear());
// console.log(date.getMonth()+1);
// console.log(date.getDate());//星期几
</script>
显示格式化时间
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
div{
margin: auto;
border-radius: 28%;
width: 800px;
height: 150px;
background-color: paleturquoise;
font-size: 35px;
text-align: center;
line-height: 150px;
}
</style>
<body>
<div></div>
<script>
showTime()
// 定时器
setInterval(function () {
showTime()
}, 1000)
function showTime() {
// 获取div
const div = document.querySelector('div')
// 创建
const n = new Date()
// 获取信息
let year = n.getFullYear()
let month = n.getMonth() + 1
let day = n.getDate()
let hour = n.getHours()
let min = n.getMinutes()
let second = n.getSeconds()
// 补0
month = month < 10? '0'+ month :month
day = day < 10? '0'+ day :day
hour = hour < 10? '0'+ hour : hour
min = min < 10? '0'+ min : min
second = second < 10? '0'+ second :second
// 字符串拼接
const str = `${year}-${month}-${day} ${hour}:${min}:${second}`
div.innerHTML = str
}
</script>
</body>
</html>
时间戳
<script>
const n =new Date()
//获取时间戳
//getTime
const re =n.getTime()
console.log(re);
</script>
获得时间戳
获取时间戳 getTime()
const re= date.getTime()
2.+new Date
const re= +new Date()
3.Date.now()
<script>
const n=new Date()
// 获取时间戳 getTime()
// const re= date.getTime()
// 2.+new Date
// const re= +new Date()
// 3.Date.now()
const re= Date.now();//当前时间戳
console.log(re);
</script>
倒计时案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.countdown {
width: 240px;
height: 305px;
text-align: center;
line-height: 1;
color: #fff;
background-color: brown;
/* background-size: 240px; */
/* float: left; */
overflow: hidden;
}
.countdown .next {
font-size: 16px;
margin: 25px 0 14px;
}
.countdown .title {
font-size: 33px;
}
.countdown .tips {
margin-top: 80px;
font-size: 23px;
}
.countdown small {
font-size: 17px;
}
.countdown .clock {
width: 142px;
margin: 18px auto 0;
overflow: hidden;
}
.countdown .clock span,
.countdown .clock i {
display: block;
text-align: center;
line-height: 34px;
font-size: 23px;
float: left;
}
.countdown .clock span {
width: 34px;
height: 34px;
border-radius: 2px;
background-color: #303430;
}
.countdown .clock i {
width: 20px;
font-style: normal;
}
</style>
</head>
<body>
<div class="countdown">
<p class="next">今天是2222年2月22日</p>
<p class="title">下班倒计时</p>
<p class="clock">
<span id="hour">00</span>
<i>:</i>
<span id="minutes">25</span>
<i>:</i>
<span id="second">20</span>
</p>
<p class="tips">18:30:00下课</p>
</div>
<script>
const hour=document.querySelector('#hour')
const minutes=document.querySelector('#minutes')
const second=document.querySelector('#second')
// 定时器
const timer= setInterval(function () {
showTime()
}, 1000)
showTime()
function showTime(){
//创建时间
//结束时间
const end =new Date('2022-4-22 18:30:00')
//开始时间
const start =new Date()
const val= end.getTime() - start.getTime()
// console.log(val);
let h= parseInt(val /1000 /60 / 60)
let m=parseInt(val / 1000 / 60 % 60)
let s=parseInt(val/1000 % 60)
h = h < 10? '0'+ h : h
m= m < 10? '0'+m :m
s = s < 10? '0'+ s :s
// console.log(s);
hour.innerHTML=h
minutes.innerHTML=m
second.innerHTML=s
//时间到了停止定时器
if(val <=0){
clearInterval(timer)
hour.innerHTML='00'
minutes.innerHTML='00'
second.innerHTML='00'
}
}
</script>
</body>
</html>
DOM节点
查找节点
查找父节点
元素.parentNode
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<p>段落</p>
<h2>标题</h2>
<span>111</span>
</div>
<script>
const span=document.querySelector('span')
//找父级div
// span.parentNode
console.log(span.parentNode);
</script>
</body>
</html>
查找子节点
元素.childNodes 所有的儿子 包括空格
元素.children 所有的元素子节点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<p>段落</p>
<h2>标题</h2>
<span>111</span>
</div>
<script>
const div=document.querySelector('div')
console.log(div.childNodes);//所有的儿子 包括空格
console.log(div.children);//所有的元素子节点
</script>
</body>
</html>
查找兄弟关系
上一个元素兄弟
span.previousElementSibling
下一个元素兄弟
span.nextElementSibling
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<p>段落</p>
<h2>标题</h2>
<span>111</span>
<i>1111</i>
</div>
<script>
const span=document.querySelector('span')
//兄弟关系
// 上一个元素兄弟
// span.previousElementSibling
console.log(span.previousElementSibling);
// 下一个元素兄弟
// span.nextElementSibling
console.log(span.nextElementSibling);
</script>
</body>
</html>
创建节点
createElement()
追加节点
1. 追加节点 插入到父元素的最后一个子元素
父元素.appendChild(需要添加的子元素)
2. 插入节点
父.appendChild(新的.旧的)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="button" value="点击">
<div>
<h1>123</h1>
</div>
<script>
const btn=document.querySelector('input')
const div=document.querySelector('div')
const h1=document.querySelector('h1')
btn.addEventListener('click',function(){
const newP=document.createElement('p')
// 追加节点 插入到父元素的最后一个子元素
// 父元素.appendChild(需要添加的子元素)
div.appendChild(newP)
// 插入节点
// 父.appendChild(新的.旧的)
div.insertBefore(newP,h1)
newP.innerHTML='娃哈哈'
})
</script>
</body>
</html>
克隆节点
克隆谁,先找到谁
克隆 元素.cloneNode(true)//克隆元素以及所以子节点 //false克隆本身
默认值为 false
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="button" value="点击">
<div class="box" title="'图片">
<img src="./学成在线重构/images/course02.png" alt="">
<h2>标题</h2>
</div>
<script>
// 克隆谁,先找到谁
// 克隆 元素.cloneNode(true)//克隆元素以及所以子节点 //false克隆本身
const btn=document.querySelector('input')
const div=document.querySelector('div')
btn.addEventListener('click', function () {
//负直节点
const newDiv=div.cloneNode(true)
//追加到body的最后
document.body.appendChild(newDiv)
})
</script>
</body>
</html>
删除节点
删除元素 :父.removeChild(子)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="button" value="点击">
<div>
<img src="./学成在线重构/images/course02.png" alt="">
</div>
<script>
//删除元素 :父.removeChild(子)
const btn=document.querySelector('input')
const img=document.querySelector('img')
btn.addEventListener('click', function () {
img.parentNode.removeChild(img)
})
</script>
</body>
</html>
移动元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="button" value="点击">
<div>
<img src="./学成在线重构/images/course02.png" alt="">
</div>
<p></p>
<script>
const btn=document.querySelector('input')
const img=document.querySelector('img')
btn.addEventListener('click', function () {
document.querySelector('p').appendChild(img)
})
</script>
</body>
</html>
M端事件
移动端事件
<script>
// 给文档监听事件
// touchstart 按下触发
document.addEventListener('touchstart',function(){
console.log('按下');
})
//touchmove 滑动触发
document.addEventListener('touchmove',function(){
console.log('滑动');
})
//touchend 松开触发
document.addEventListener('touchend',function(){
console.log('松开');
})
</script>
案例
重绘和回流
重绘不一定会影响回流,回流一定会影响重绘
页面发生改变 回流