01 轮播图练习
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>简单轮播图</title>
<style>
*{
margin: 0;
padding: 0;
}
.wp{
width: 250px;
height: 400px;
border: 1px #f00 solid;
margin: 40px auto 0;
position: relative;
overflow: hidden;
}
#list{
display: flex;
width: 1000px;
transform: translateX(0);
/* 添加过渡动画 */
transition: all 1s;
}
#list img{
width: 250px;
height: 400px;
}
#box{
width: 100%;
height: 40px;
position: absolute;
background: rgba(0, 0, 0, 0.5);
left: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
}
#box span{
width: 10px;
height: 10px;
background: #fff;
border-radius: 50%;
margin: 0 5px;
cursor: pointer;
}
#box span:hover{
background: #f60;
box-shadow: 0 0 5px 5px #ccc;
}
.change{
width: 40px;
height: 40px;
background: #f60;
color: #fff;
line-height: 40px;
position: absolute;
top: 180px;
cursor: pointer;
text-align: center;
}
#left{left: 0;}
#right{right: 0;}
</style>
</head>
<body>
<!-- 外层的div,包含图片列表 -->
<div class="wp">
<div id="list">
<img src="../images/1.png" alt="">
<img src="../images/2.png" alt="">
<img src="../images/3.png" alt="">
<img src="../images/4.png" alt="">
</div>
<!-- 分页器 -->
<div id="box">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<!-- 左右切换 -->
<span class="change" id="left"><</span>
<span class="change" id="right">></span>
</div>
</body>
</html>
<script>
// 获取需要点击的分页器
let box = document.getElementById('box');
let spanBox = box.getElementsByTagName('span');
// 获取列表元素
let list = document.getElementById('list');
// 点击分页器
spanBox[0].onclick = function(){
list.style.transform = 'translateX(0)';
n=0;
};
spanBox[1].onclick = function(){
// console.log('点击了第二个图片');
list.style.transform = 'translateX(-250px)';
n=1;
};
spanBox[2].onclick = function(){
list.style.transform = 'translateX(-500px)';
n=2;
};
spanBox[3].onclick = function(){
list.style.transform = 'translateX(-750px)';
n=3;
};
// 获取左右按钮
let leftBtn = document.getElementById('left');
let rightBtn = document.getElementById('right');
// 设置当前是第一张图片, 从0开始
let n = 0;
// 点右边的按钮
rightBtn.onclick = function(){
n++;
n = n>=3 ? 3 :n;
console.log(n);
list.style.transform = 'translate(-'+n*250+'px)'
}
// 点左边的按钮
leftBtn.onclick = function(){
// n = n<=0 ? 0 : --n; //先运算再赋值
n<=0 ? n=0 : n--; //在三元中的表达式赋值
console.log(n);
list.style.transform = 'translate(-'+n*250+'px)'
}
</script>
02 if语句
程序结构
1.基本结构(顺序执行)
2.分支结构(分支语句)
3.循环结构(循环语句)
分支语句
if(判断条件){
只有当if中的判断条件为true时,{}中的代码才能被执行,如果判断条件不为true,则跳过{}中的代码,程序继续往下执行
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>if语句</title>
</head>
<body>
</body>
</html>
<script>
if (0 || 6){
console.log('苏妲己');
}
console.log('武曌');
</script>
if(判断条件){
如果判断条件为true,则执行这里的代码
}else{
如果判断条件 不为 true,则执行else中的代码
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>if语句</title>
</head>
<body>
</body>
</html>
<script>
let num1 = 20;
if(num1>100){
console.log('20>100');
}else{
console.log('20<100');
}
</script>
if可以单独使用,else必须结合if一起使用;else指的是除了满足if条件之外的所有条件
03 if语句练习
分支语句的级联语句
if(判断条件){
}else{
}
在使用if语句的时候,else的范围有时候会比较大,因此可以使用else
if对具体的情况进行细分
else if 可以根据情况设置多个
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>if语句练习</title>
</head>
<body>
数据1:<input type="number" id="num1" value=""> <br/>
数据2:<input type="number" id="num2" value=""> <br/>
<button id="btn">比较大小</button>
</body>
</html>
<script>
let score = 70;
if (score == 100) {
console.log('奖励一个对象');
} else if (score >= 90) {
console.log('优秀');
} else if (score >= 80) {
console.log('良好');
} else if (score >= 70) {
console.log('中等');
} else if (score >= 60) {
console.log('及格');
} else {
console.log('开除学籍');
}
if(3>4){
console.log('周末出去玩');
}else{
console.log('周末不出去玩');
}
3>4?console.log('周末出去玩'):console.log('周末不出去玩');
let num1 = document.getElementById('num1');
let num2 = document.getElementById('num2');
let btn = document.getElementById('btn');
btn.onclick = function (){
if(num1.value>num2.value){
alert('下课');
}else if(num1.value==num2.value){
alert('吃饭')
}else{
alert('放假');
}
}
</script>
判断是否为闰年
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>if语句练习</title>
</head>
<body>
输入年份: <input type="number" id="year" value="">
<button id="btn2">查看是否是闰年</button>
</body>
</html>
<script>
/*
判断闰年的条件:
1.能被400整除
2.能被4整除,不能被100整除
*/
let year = document.getElementById('year');
let btn2 = document.getElementById('btn2');
btn2.onclick = function(){
if(year.value%400==0){
alert(year.value+'年是闰年');
}else if(year.value%4==0 && year.value%100!=0){
alert(year.value+'年是闰年')
}
else{
alert(year.value+'年是平年')
}
}
</script>
04 水仙花数练习
数学方法
Math.floor(num) 把数字num向下取整,舍弃小数
Math.ceil(num) 把数字num向上取整,舍弃掉小数,整数部分加1
Math.round(num) 把数字num四舍五入
水仙花数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>水仙花数</title>
</head>
<body>
<input type="number" value="" id="txt">
<button id="btn">判断</button>
</body>
</html>
<script>
console.log(Math.floor(3.95));
console.log(Math.ceil(3.05));
console.log(Math.round(3.45));
let txt = document.getElementById('txt');
let btn = document.getElementById('btn');
btn.onclick = function(){
let v = txt.value - 0;
let v1 = Math.floor(v/100);
let v2 = Math.floor(v%100/10);
let v3 = Math.floor(v%10);
if(v==v1*v1*v1+v2*v2*v2+v3*v3*v3){
alert(v+'是水仙花数');
}else{
alert(v+'不是水仙花数');
}
};
</script>
05 switch语句
switch 语句,特点是 默认贯穿整个结构,可以使用关键字break阻止贯穿
break的作用是阻断当前结构语句,可以阻断 switch 也可以阻断循环
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>switch语句</title>
</head>
<body>
</body>
</html>
<script>
/*
switch 语句,特点是 默认贯穿整个结构,可以使用关键字break阻止贯穿
break的作用是阻断当前结构语句,可以阻断 switch 也可以阻断 循环
*/
let count = 80;
switch (count) {
case 30:
console.log('天涯何处觅知音');
break;//阻断switch 语句,跳出switch
case 70:
console.log('一曲肝肠断');
// 如果上面的条件都不能满足,则会执行default里面的代码
default:
console.log('天涯何处无返芳草+default');
break;
}
let num = 1;
switch (num) {
case 1:
console.log('当前是1');
num++;
case 2:
console.log('当前是2');
num++;
break;
default:
console.log('当前是default');
num--;
break;
}
console.log(num);
</script>
06 for循环
js中的循环
1.for循环
2.while
3.do-while
for(循环变量的初始值;循环条件;循环变量的增值){
循环体(就是循环要执行的代码)
}
对循环条件的理解,是变量满足循环条件的时候,才会执行循环体中的代码
只有循环结束,循环后面的代码才能执行
执行过程:
1.首先判断循环变量的初始值,是否满足循环条件
2.如果满足循环条件,则执行循环体中的代码
3.循环体中的代码执行完毕,执行循环变量的增值操作
4.判断循环变量的当前值是否满足循环条件
5.在下一次循环中依次执行 2 3 4 步骤
6.直到循环变量的当前值不满足 循环条件,跳出当前循环
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环</title>
</head>
<body>
</body>
</html>
<script>
for (i=0;i<5;i++) {
console.log(i);
}
console.log('世上无难事只怕有心人'+i);
let sum = 0;
for(let a=0;a<=100;a++){
sum+=a;
}
console.log(sum);
// 球1~100的偶数和,包含1和100
let sum1=0;
for(let n=1;n<=100;n++){
if(n%2==0){
sum1+=n;
}
}
console.log(sum1);
let sum2=0;
for(let m=0;m<=100;m+=2){
sum2+=m;
}
console.log(sum2);
// 求1~100中,所有3的倍数之和
let sum3=0;
for(let s=0;s<=100;s+=3){
sum3+=s;
}
console.log(sum3);
</script>
continue用法
continue 当在循环体中执行continue之后,它后面的所有代码都不执行,直接跳出当前循环,执行下一次循环
break 当在循环体中执行break之后,直接终止当前的for循环
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环</title>
</head>
<body>
</body>
</html>
<script>
//continue 用法
console.log('========================================');
for(let m=0;m<5;m++){
if(m%2==0){
continue;//停止当前一次循环,直接进入下一次循环
}
console.log(m);
}
// break 用法
for(let m=1;m<10;m++){
if(m%3==0){
break;//终止当前for循环
}
console.log(m);
}
</script>
输出所有的水仙花数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>输出所有的水仙花数</title>
</head>
<body>
</body>
</html>
<script>
for (v=0;v<1000;v++){
// let v = txt.value - 0;
let v1 = Math.floor(v/100);
let v2 = Math.floor(v%100/10);
let v3 = Math.floor(v%10);
if(v==v1*v1*v1+v2*v2*v2+v3*v3*v3){
console.log(v+'是水仙花数');
}
}
</script>
最大公约数和最小公倍数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>最大公约数</title>
</head>
<body>
数据1: <input type="number" id="num1">
数据2: <input type="number" id="num2"><br/>
<button id="btn">最大公约数1</button>
<button id="btn1">最大公约数2</button>
<button id="btn2">最小公倍数3</button><br/>
最大公约数: <input type="number" id="num3">
最小公倍数: <input type="number" id="num4">
</body>
</html>
<script>
let num1 = document.getElementById('num1');
let num2 = document.getElementById('num2');
let num3 = document.getElementById('num3');
let num4 = document.getElementById('num4');
let btn = document.getElementById('btn');
let btn1 = document.getElementById('btn1');
let btn2 = document.getElementById('btn2');
btn.onclick = function () {
let val1 = num1.value - 0;
let val2 = num2.value - 0;
// console.time() 测试运行时间
console.time('时间');
let v=0;
for(let i=0;i<val1&&i<=val2;i++){
if(val1%i==0 && val2%i==0){
console.log('最大公约数'+i);
v=i;
}
}
num3.value=v;
console.timeEnd('时间');
};
btn1.onclick = function(){
let val1 = num1.value - 0;
let val2 = num2.value - 0;
// 求出最小值
let min = val1>val2 ? val2 : val1;
for(let i=min;i>=0;i--){
if(val1%i==0 && val2%i==0){
num3.value=i;
console.log('最大公约数'+i);
// break;
}
}
};
// 最小公倍数
btn2.onclick = function(){
let val1 = num1.value - 0;
let val2 = num2.value - 0;
let min = val1>val2 ? val2 : val1;
for(let i=min;i>=0;i++){
if(val1%i==0 && val2%i==0){
num3.value=i;
num4.value=val1*val2/num3.value;
console.log(num4.value+'最小公倍数');
break;
}
}
};
</script>