chapter 3、JS----从入门到熟练的小白之路(持续更新....)

238 阅读2分钟

一、操作语句之for 循环

1、应用环境

当需要按照某种规律重复的去一件事情的时候,就需要用for循环

2、基础语法

2-1、 想要依次打印出下面的语法

var ary=[1,2,3];
for (var i=0;i<ary.length;i++){
     console.log(ary[i]);
}
  • 定义初始值
  • 制定循环条件,只要条件成立就会执行循环体中的内容
  • 循环体(大括号就是循环体)
  • 定义的初始值累计操作

2-2、把下面的数组从后到前依次打印出来

var ary=[1,2,3,4];
for(var i=ary.length-1; i>=0;i--){
    console.log(ary[i]);
}

2-3、打印所有的奇数项

var ary=[1,2,3,4];
for(var i=0;i<ary.length;i++){
       //i=0   第一项 
       //i=1   第二项
       //i=3   第三项
       // 索引是偶数的话,就是奇数项,只用判断索引,并取相反的值
       //i%2==0 的时候就是偶数项
       if(i%2==0){
           console.log(ary[i]);
       }
}

3、两个重要的关键词

  • continue: 结束本次循环,继续下一轮循环
  • break: 强制结束整个循环

3-1、案例解说具体含义

for(var i=0;i<10;i++){
       if(i<5){
          i++;//
          continue;
       }
       if(i>7){
          i+=2;
          break;
       }
       i+=1;
}
console.log(i);

3-2、练习题

下面的案例,最终打印的是几?打印几次

for(var i=1;i<=10;i+=2){
       if(i<=5){
          i++;//
          continue;
       }else{
          i-=2;
          break;
       }
       i--;
       console.log(i);
       
}
console.log(i);

二、开关灯案例:

1、【相关知识铺垫】

1-1、元素包含的常用属性:

  • className: 存储的是字符串,代表当前元素的类名
  • id: 存储的是字符串,代表当前元素的id名
  • innerHTML:存储当前元素的所有内容,包含标签
  • innerText:存储当前元素的文本内容
  • style:存贮当前元素的所有行内样式
  • onclick:点击事件属性
  • onmouseover:鼠标滑过事件
  • onmouseout:鼠标离开事件

1-2、通过id 获取一个元素:document.getElementById("id名字")

<div id="box1">box1</div>
<script>
   var Obox1=document.getElementById("box1");
   console.log(Obox1)
</script>

1-3、通过标签名去获取一类标签:[context].getElementsByTagName;

var olis=document.getElementsByTagName("li"); // 获取文档中左右的li标签
var box1=document.getElementById("box1");
var lis=box1.getElementsByTagName("li");// 获取box1 下面所有的li元素

1-4、通过style属性去添加或者修改元素的样式

<div id="box1">box1</div>
<script>
   var Obox1=document.getElementById("box1");
       Obox1.style.backgroundColor="pink";
</script>

1-5、给元素添加类名

var Obox1=document.getElementById("box1");
 Obox1.className="current";
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    *{
        margin:0;
        padding:0;
    }
    body{
        background:darkturquoise;
    }
    #main{
        width:300px;
        border:1px solid green;
        margin:0 auto;
    }
    #button{
        width:100%;
        height:50px;
        background:lightblue;
        text-align: center;
    }
    #imgbox{
        display:block;
    }
    </style>
</head>
<body>
    <div id="main">
        <button id="button">隐藏</button>
        
        <img id="imgbox" src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1577444372587&di=1684c649c2b1d4b1fdcd5910968c508b&imgtype=0&src=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fupload%2Fupc%2Ftx%2Fpcdlc%2F1709%2F16%2Fc79%2F59427944_1505500668556.gif" alt="">
        
    </div>
</body>
</html>
<script>
/* 
  默认:图片是显示的,按钮的内容 隐藏
  点击按钮的时候,如果按钮原来是隐藏,
    + 按钮内容变成“显示”
    + 图片消失
  点击按钮的时候,如果按钮是显示,
    + 按钮内容变成“隐藏”
    + 图片显示
*/
var button=document.getElementById("button");
var oimg=document.getElementById("imgbox");
button.onclick=function(){
     var value=button.innerText;
     if(value=="隐藏"){
        button.innerHTML="显示";
        oimg.style.display="none";
     }else{
        button.innerHTML="隐藏";
        oimg.style.display="block";
     }
}
</script>

三、案例之隔行变色

1、css 实现

 如果每隔三行实现一个变色,就是:
     .main>li:nth-child(3n+1) 
     .main>li:nth-child(3n+2)   
     .main>li:nth-child(3n)    
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    *{
        margin:0;
        padding:0;
    }
    ul,ol{
        list-style: none;
    }
    body{
        background:lightseagreen;
    }
    .main{
        width:500px;
        /* border:1px solid #000; */
        margin:50px auto;
        color:#666;
    }
    .main>li{
        height:40px;
        line-height:40px;
        text-indent: 20px;
        
    }
    .main>li:nth-child(even){
         background:yellow;
    }
    .main>li:nth-child(odd){
        background:lightgreen;
    }
    .main>li:hover{
        background:lightblue;
    }
    </style>
</head>
<body>
    <ul class="main">
        <li>你永远是最胖的</li>
        <li>你永远是最胖的</li>
        <li>你永远是最胖的</li>
        <li>你永远是最胖的</li>
        <li>你永远是最胖的</li>
        <li>你永远是最胖的</li>
    </ul>
</body>
</html>

2、js实现奇偶行变色

2-1、分析:隔行变色的原理:

+ 操作的元素:li ,
+ 让 处于奇数的li 变一个颜色1
+ 让 处于偶数行的li 变一个颜色2

方法一: 通过style行内属性来改变

var omain=document.getElementById("main");
     var lis=omain.getElementsByTagName("li");
     for(var i=0;i<lis.length;i++){
         if(i%2!=0){
            lis[i].style.backgroundColor="yellow";
         }else{
            lis[i].style.backgroundColor="pink";
         }
     }

方法二:通过添加类名

 <style>
    .color1{
        background:lightsalmon;
    }
    .color2{
        background:yellow;
    }
 
 </style>
 
 for(var i=0;i<lis.length;i++){
         if(i%2!=0){
            lis[i].className="color1";
         }else{
            lis[i].className="color2";
         }
     }

全部用js实现,隔行变色,并且鼠标滑上去的时候,改变颜色,鼠标离开之后,还原原有的颜色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    *{
        margin:0;
        padding:0;
    }
    li{
        height:30px;
        line-height: 30px;
    }
    </style>
</head>
<body>
    <ul class="main" id="main" style="background:blue">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
</body>
</html>
<script>
/* 
 原理:获取到所有的li元素,如果这个li是偶数我们就让它是一个颜色,如果不是偶数就是另一个颜色
*/
var omain=document.getElementById("main");
var lis=omain.getElementsByTagName("li");
for(var i=0;i<lis.length;i++){
  if(i%2==0){
      lis[i].style.background="blue";
  }else{
      lis[i].style.background="yellow";
  }
  // 鼠标滑上li的时候,改变那个li的背景颜色
  lis[i].onmouseover=function(){
          // 把原有的颜色绑定上去
          this.bgColor=this.style.backgroundColor;
          this.style.background="lightpink";
  }
  // 鼠标离开的时候,恢复原有的颜色
  lis[i].onmouseout=function(){
        this.style.background=this.bgColor;
  }
}
</script>

四、阿里面试题

let a={
    n:1,
}
let b=a;
a.x=a={
    n:2
}
console.log(a.x);
console.log(b)

连等赋值:是按照从右向左

var a=b=20;
// 第一步:先创建一个值
// 第二步:b=20
// 第三步:var a=20a.x 的优秀级高,所以先给a.x进行赋值,再给a进行赋值;

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

undefined
{ n: 1, x: { n: 2 } }