2-选择结构

1:流程控制

JS程序一般是按照书写的顺序来运行的。这种运行称为顺序运行,是程序流的默认方向。与顺序运行不同,另一种运行将程序流转换到脚本的另外的部分。也就说,不按顺序运行下一条语句,而是运行另外的语句。
为了使脚本可以使用,该控制的转换必须以逻辑方式执行。程序控制的转换基于一个“决定“,这个决定结果是真还是假(true或false),来决定程序的运行方向。

2:程序三大结构

  • 1:顺序结构
  • 2:选择(条件)结构
  • 3:循环结构

3:顺序结构

4:选择结构

5:if选择语句

单一选择结构: if(){}
if(条件){
语句
}
原理: 如果条件为真,则执行下面的语句,否则不执行
if (true) {
  alert('不开心');
}
二路选择结构: if(){}else{}
if (true) {
  alert('不开心');
} else {
  alert('开心');
}
原理: 如果条件为真则执行if下面的语句,否则执行else下面的语句
三目运算符:?:
多路选择结构: if(){}else if(){}else if(){}else{}
 // 判断成绩等级
var s = 92;
if (s > 90)
  alert('A');
else if (s > 80)
  alert('B');
else if (s > 70)
  alert('c');
else if (s > 60)
  alert('D');
else
  alert('E');
多路选择结构流程图:
注意: 花括号{}有和没有的区别。只能执行一条语句。
if(6>5)
  alert('ok');
else
  alert('no');
  alert('hehe'); //结果:no  hehe
因为,不加{}相当于:
if (6 > 5) {
  alert('ok');
} else {
  alert('no');
}
alert('hehe');
案例: 输入年份,计算某一年是否是闰年。
请输入年份:<input type="text" id="year"><input type="submit" id="judge" value="判断">
<script>
  // 获取按钮元素
  var judge = document.getElementById('judge');
  // 获取输入框元素
  var year = document.getElementById('year');
  // 给按钮添加点击事件
  judge.onclick = function () {
    // 获取年份
    var val = year.value;
    // 判断用户输入的是否为纯数字
    if( isNaN(Number(val)) === true) {
      alert('请输入正确的年份!');
    } else {
      // 判断年份是公元前还是公元
      var prefix = val < 0 ? '公元前' : '公元';
      // 使用Math.abs()方法:求绝对值
      val = Math.abs(val);
      // 判断是否为闰年
      if((val % 4 === 0 && val % 100 != 0)  || (val % 400 === 0)) {
        alert(prefix + val + '年是闰年');
      } else {
        alert(prefix + val + '年是平年');
      }
    }
  }
 </script>

应用:

1:判断一个整数,属于哪个范围:大于0;小于0;等于0。
var num = window.prompt('请输入需判断的正数');
if (num > 0) {
  alert('大于0');
} else if (num < 0) {
  alert('小于0');
} else {
  alert('0');
}
2:判断一个整数是偶数还是奇数,并输出判断结果。
var num = window.prompt('请输入需判断的正数');
if (num % 2 === 0) {
  alert('偶数');
} else {
  alert('奇数');
}
3:开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适。
请输入身高:<input type="text" id="cm" /><br/>
请输入体重:<input type="text" id="kg" /><br/>
检测是否合格:<input type="submit" id="btn" value="检测" />
<script type="text/javascript">            
  var cm = document.getElementById('cm');
  var kg = document.getElementById('kg');
  var btn = document.getElementById('btn');
  btn.onclick = function () {
    var result = kg.value;
    var result1 = cm.value;
    var result2 = (result1 - 108) * 2;
    var result3 = result - result2;
    if (result3 > 10) {
      alert('太胖');
    } else if (result3 < -10) {
      alert('偏瘦');
    } else {
      alert('体重合格');
    }
  }

6:switch选择语句

语法: switch(condition){case :break;default:}
case后面的值可以是:常量,变量,表达式
               
var n =2;
switch (n) {
  case "a":
          console.log('a');
          break;
  case 2:
          console.log("b");
          break;
  case true:
          console.log('c');
          break;
  default:
          console.log("d");
}

break具体讲解:阻止代码向下一个case运行。防止case穿透。

default具体讲解: 匹配不存在时做的事情。
案例: 输入数字,显示 期几。
var week = document.getElementById('week');
var btn = document.getElementById('btn');
btn.onclick = function() {
  var val = Number(week.value);  //week.value是String类型的 无法和case的数字匹配
  switch (val) {
    case 1 :
           alert('星期一');
           break;
    case 2 :
           alert('星期2');
           break;
    case 3 :
           alert('星期3');
           break;
    case 4 :
           alert('星期4');
           break;
    case 5 :
           alert('星期5');
           break;
    case 6 :
           alert('星期6');
           break;
    case 7 :
    case 0 :
           alert('星期7');
           break;
    default:
           alert('非法数字');
           break;
  }
}

应用:

1:输入分数,判定成绩等级。(if和switch语法)
var score = window.prompt('请输入成绩');
switch (true) {
  case score > 90 && score <= 100:
       alert('a');
       break;
  case score > 80 && score <= 90:
       alert('b');
       break;
  case score > 70 && score <= 80:
       alert('c');
       break;
  case score > 60 && score <= 70:
       alert('d');
       break;
  case score <= 60 :
       alert('e');
       break;
  default :
       alert('无效成绩');
       break;
}
2:输入月份,显示当月的天数。
要求: 1) 利用case穿透简化代码。       
请输入月份:<input type="text" id="month" /><br/>
请检测月份:<input type="submit" id="btn" value="检测" /><br/>
<script type="text/javascript">
  var month = document.getElementById('month');
  var btn = document.getElementById('btn');
  btn.onclick = function () {
    var result = month.value;
    if(result > 0 && result <=12){
      switch (result) {
        case '1':
        case '3':
        case '5':
        case '7':
        case '8':
        case '10':
        case "腊月":
             alert(result + '月有31天');
             break;
        default :
             alert('30天');
             break;
      }
    } else {
      alert('无效年份');
    }                    
  }
</script>
3.实现两个数的四则运算               
var a = 23,b = 5;
var ch = prompt('请输入符号');
switch (ch) {
  case "+" :
       alert(a + b);
       break;
  case "-" :
       alert(a - b);
       break;
  case "*" :
       alert(a * b);
       break;
  case "/" :
       alert(a / b);
       break;
  default:
       alert('无效符号');
       break;
}
4.周一到周五输出working, 周六周天输出relaxing              
var date = window.prompt('input');
switch (date) {
  case 'monday' :
  case 'thesday' :
  case 'wendnesday' :
  case 'thursday' :
  case 'furday' :
       alert("wordking");
       break;
  case '周六' :
  case '周日' :
       alert('relaxing');
       break;
}

综合应用:

1:根据一个数字日期,判定这个日期是这一年的第几天。
例如:20160211,计算后结果为42.
<input type="text" id="date"><input type="submit" value="计算" id="calculate">
<script>
  function $(id) {
    return document.getElementById(id);
  }
  var date = $('date'), calculate = $('calculate');
  // 添加点击事件
  calculate.onclick = function () {
    // 获取用户输入的内容
    var dateVal = date.value;
    var year  = parseInt(dateVal / 10000);
    var month = parseInt( (dateVal - year * 10000) / 100);
    var day   = dateVal % 100;                    
    var total = day;
    for (var i = 1; i < month; i++) {
      switch (i) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
             total += 31;
             break;
        case 4:
        case 6:
        case 9:
        case 11:
             total += 30;
             break;
        case 2:
             if (year % 4 == 0 && year % 100 != 0 || year % 400 === 0) {
               total += 29;
             } else {
               total += 28;
             }
      }
    }
  }
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值