控制流程语句

流程控制语句

流程控制语句的分类

1.顺序结构
2.选择结构(分支语句) if if-else switch
3.循环结构:for for-in while do-while
4.其他:break,continue

1.分支语句

(1)if语句


    语法:if(条件){
                  条件成立时执行的代码
                  }
    注意:大括号可以省略,if只能控制紧跟在()后面的一行代码
    var money = 100;
     if(money >= 200){ //条件成立
         console.log("买猪肉");
         console.log("买房子");
     }

(2)if-else


     语法:if(条件){
                   条件成立时执行的代码
                   }else{ 条件不成立时执行的代码 }
                    
    var age = 4;
    if(age < 7){
        //条件成立
        console.log("上幼儿园玩泥巴");
    }else{
        //条件不成立执行的代码
        console.log("去网吧玩泥巴");
    }
    

(3)if-else嵌套

 语法:if(条件){ 
               条件成立时执行的代码 
              }else if(条件){
                             条件成立时执行的代码
                            } else if.....  
                            
        注意:else总是和他前面最近的那个if是一对
     //90-100优秀  80-90良好   70-80一般   60-70及格   60以下不及格 
     var c = 89;

     if(c >= 90){
         console.log("优秀");
     }else if(c>=80){
         console.log("良好");
     }else if(c>=70){
        console.log("一般")
     }else if(c>=60){
         console.log("结果");
     }else{
         console.log("不及格")
     }
//用if-else嵌套实现简易计算器
 <input type="text" id="in1">
        <select name="" id="sel">
            <option value="+">+</option>
            <option value="-">-</option>
            <option value="*">*</option>
            <option value="/">/</option>
        </select>
        <input type="text" id="in2"><button id="btn">=</button>
        <input type="text" id="in3">
        <script>
            var oIn1 = document.getElementById("in1");
            var oIn2 = document.getElementById("in2");
            var oIn3 = document.getElementById("in3");
            var oBtn = document.getElementById("btn");
            var oSel = document.getElementById("sel");
            oBtn.onclick = function () {
                if(oSel.value=="+"){
                    oIn3.value=Number(oIn1.value)+Number(oIn2.value);
                }else if(oSel.value=="-"){
                    oIn3.value=Number(oIn1.value)-Number(oIn2.value);
                }else if(oSel.value=="*"){
                    oIn3.value=Number(oIn1.value)*Number(oIn2.value);
                }else if(oSel.value=="/"){
                    oIn3.value=Number(oIn1.value)/Number(oIn2.value);
                }
            }
                
        
        
        </script>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)switch…case

switch( 匹配值 ){
            case 情况1 :匹配到情况1执行的代码;break;
            case 情况2 :匹配到情况2执行的代码;break;
            case 情况3 :匹配到情况3执行的代码;break;
            ....
            default : 上面都不能匹配到的时候执行的代码
        }
// break:防止穿透,如果不写break,匹配到对应的一项以后,后面的不会再进行匹配,直接执行

     var str = "*"
     switch(str){
         case "+" : console.log(100+10);break;
         case "-" : console.log(100-10);break;
         case "*" : console.log(100*10);break;
         case "/" : console.log(100/10);break;
         default:console.log("能力有限,算不出来");
     }
    

     switch(parseInt(c/10)){ //90 91 92 93 94 95 
         case 10: //如果100,就跳过往下执行
         case 9 : console.log("优秀");break;
         case 8 : console.log("良好");break;
         case 7 : console.log("一般");break;
         case 6 : console.log("及格");break;
         default:console.log("不及格");
     }
        

注意:if-else与switch…case的关系

如果需要用到判断执行某些代码,可以使用if-elseswitch,一般情况下,如果条件明确,并且是一些简单字符,数字等,会选择用switch,相反的结构、条件复杂就选用if-else
//用switch...case实现简易计算器

<input type="text" id="in1">
    <select name="" id="sel">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type="text" id="in2"><button id="btn">=</button>
    <input type="text" id="in3">
    <script>
        var oIn1=document.getElementById("in1");
        var oIn2=document.getElementById("in2");
        var oIn3=document.getElementById("in3");
        var oBtn=document.getElementById("btn");
        var oSel=document.getElementById("sel");
        oBtn.onclick=function(){
            switch(sel.value){
                case "+":oIn3.value=Number(oIn1.value)+Number(oIn2.value);break;
                case "-":oIn3.value=Number(oIn1.value)-Number(oIn2.value);break;
                case "*":oIn3.value=Number(oIn1.value)*Number(oIn2.value);break;
                case "/":oIn3.value=Number(oIn1.value)/Number(oIn2.value);break;

            }
        }
    
    
    
    </script>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)switch…case

2.获取DOM元素的方式
1.通过id名获取
  document.getElementById("id名");  一次获取一个
2.通过tagName获取
  a.获取整个文档中的对应的标签:document.getElementsByTagName('标签名') :是一个集合,使     用的时候必须通过[下标]获取,不区分大小写
  b.获取对应父元素中的标签:父元素.getElementsByTagName('标签名')
3.通过className获取   (不建议使用,因为ie8不兼容)
  获取整个文档中的对应的标签:document.getElementsByClassName('类名') :是一个集合,使用的时候必须通过[下标]获取
       获取对应父元素中的标签:父元素.getElementsByClassName('类名') 
    <ul>
        <li id="li1">1</li>
        <li>2</li>
        <li class="box">3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
    <ul id="ul">
        <li>a</li>
        <li class="box">b</li>
        <li>c</li>
        <li>d</li>
    </ul>

       //1.通过id名获取元素
        var li1 = document.getElementById("li1");

        //2.通过tagName获取标签
        var oLi = document.getElementsByTagName('li');
        console.log(oLi); //HTMLCollection(6)  元素集合--类似数组

        //获取集合的个数
        console.log(oLi.length); //6

        //获取数组元素 [下标]
        console.log(oLi[0]);


        oLi[0].onclick = function(){
            alert("被点击了");
        }


        //3.获取第二个ul里面的li
        var oUl = document.getElementsByTagName("ul");
        var oLII = oUl[1].getElementsByTagName("li");
        console.log(oLII);



        //4.通过className获取标签
        var oBox = document.getElementsByClassName("box");        
        console.log(oBox);
3.循环语句

(1)for循环

for循环:让特定的代码,执行指定的次数
语法:for(表达式1;表达式2;表达式2){}
      for(初始化循环变量;条件语句;更新循环变量){  循环体 }
执行顺序:
  1.初始化循环变量  i = 0;
  2.判断条件语句
      条件成立 到3步
      条件不成立 结束循环
  3.执行循环体
  4.更新循环变量  i++  i=1  //i = 9
  5. 回到2
for(var i=0;i<10;i++){
    console.log(i);
    console.log("a");
}
//1.获取标签
var oLi = document.getElementsByTagName("li");
//2.添加点击事件
for(var i = 0;i<10;i++){
    oLi[i].onclick = function () {
        alert("点击了");
    }
}

(2)双重for循环

语法:for(表达式1;表达式2;表达式2){
       for(表达式1;表达式2;表达式2){}
     }
例子:<h2>喜欢的明星</h2>
    <ul>
        <li>吴春迪</li>
        <li>李易峰</li>
        <li>赵丽颖</li>
        <li>张若昀</li>       
        <li>白敬亭</li>
    </ul>

    <h2>喜欢的节目</h2>
    <ul>
        <li>明星大侦探</li>
        <li>青云志</li>
        <li>三国</li>
        <li>麻雀</li>
    </ul>


    <h2>讨厌的食物</h2>
    <ul>
        <li>韭菜</li>
        <li></li>
        <li>芹菜</li>
        <li>内脏</li>
        <li></li>
    </ul>

    <script>
        var oUl = document.getElementsByTagName("ul");

        //双重for循环
        for(var i = 0;i<2;i++){ //外循环循环父元素
            var oLi = oUl[i].getElementsByTagName("li");
            for(var j = 0;j<oLi.length;j++){ //内循环循环子元素
                oLi[j].style.border = "1px solid red";
            }
            
        }
       
    </script>
<table width='500' border="1">
                <tr>
                <th>姓名</th>
                <th>语文</th>
                <th>数学</th>
                <th>英语</th>
                </tr>
                <tr>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                </tr>
                <tr>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                </tr>
                <tr>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                </tr>
                <tr>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                </tr>
                </table>
                
                <script>
                var oTr = document.getElementsByTagName("tr");
                var arr = [
                ["车瑜",59,59,59],
                ["李钰",10,20,30],
                ["周大福",100,100,100],
                ["苗苗",59,10,99]
                ]
                for(var i=0;i<oTr.length-1;i++){ //外循环循环父元素
                    var oTd = oTr[i+1].getElementsByTagName("td");
                    for(var j=0;j<oTd.length;j++){//内循环循环子元素
                        oTd[j].innerHTML=arr[i][j];//给每一个单元格都设置内容,在数组
                    }
                }
                
               
                </script>

在这里插入图片描述

4.document.write()

innerHTML和document.write()的区别?

           document.write():
                1.只能操作body的内容
                2.重绘整个页面
                3.不会覆盖通过document.write写入的数据

            innerHTML:
                1.操作所有闭合标签的内容
                2.重绘某个标签的内容
                3.覆盖所有的
        
 fd
<button onclick='fun()'>按钮</button>

function fun(){
            document.body.innerHTML = "哈哈哈哈"; 
            document.body.innerHTML = "黑嘿"; 
         }
function fun(){
            document.write("嘿嘿嘿嘿嘿");
            document.write("哈哈哈");
         }

运行效果图

点击按钮之前:

在这里插入图片描述

区别2:

在这里插入图片描述
在这里插入图片描述

区别3

在这里插入图片描述

在这里插入图片描述
实例

1.实现图片的切换包括顺序切换和循环切换,顺序切换左按钮点到最后一张则显示最后一张,右按钮点回到第一张则显示第一张,循环切换可以循环起来

<script>
        var oBtn=document.getElementsByTagName("button");
        var oP=document.getElementsByTagName("p");
        var oImg=document.getElementById("img");
        var json =[
            {
                src:"img/1.jpg",
                miaoshu:"美女1",
                title:"1/4"
            },
            {
                src:"img/2.jpg",
                miaoshu:"美女2",
                title:"2/4"
            },
            {
                src:"img/3.jpg",
                miaoshu:"美女3",
                title:"3/4"
            },
            {
                src:"img/4.jpg",
                miaoshu:"美女4",
                title:"4/4"
            }
        ];
         var n=0;
         var flag=true;  
         //点击顺序按钮,标志为true
         oBtn[0].onclick=function(){
             flag = true;
         }
         //点击循环按钮,标志为false
         oBtn[1].onclick = function(){
             flag=false;
         } 
         //点击下一张
        oBtn[3].onclick = function(){
             n++;
             if(n==4){//第五张图片的时候(没有第五张)如果是顺序,则永远显示第四张,否则显示第一张
                 if(flag==true){
                     n=3;
                 }else{
                    n=0;
                 };
             }
             oImg.src=json[n].src;
             oP[0].innerHTML=json[n].title;
             oP[1].innerHTML=json[n].miaoshu;
             
        }
       //点击上一张
        oBtn[2].onclick=function(){
            n--;
            if(n<0){
                if(flag==true){//回到第一张图片再要往下点的时候,如果是顺序,则永远显示第一张,否则显示第四张
                    n=0;
                }else{
                    n=3;
                };
            }
            oImg.src=json[n].src;
             oP[0].innerHTML=json[n].title;
             oP[1].innerHTML=json[n].miaoshu;
            
        }
            
        }        
    </script>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值