JavaScript进阶 - 第4章 跟着我的节奏走(流程控制语句)

第4章 跟着我的节奏走(流程控制语句)

4-1 做判断(if语句)

if语句是基于条件成立才执行相应代码时使用的语句。

语法:

if(条件)
{ 条件成立时执行代码}

注意:if小写,大写字母(IF)会出错!

假设你应聘web前端技术开发岗位,如果你会HTML技术,你面试成功,欢迎加入公司。代码表示如下:

<script type="text/javascript">
  var mycarrer = "HTML";
  if (mycarrer == "HTML")
  {
    document.write("你面试成功,欢迎加入公司。");
  }
</script>

任务

请在右边编辑器的第7行,使用if语句补充代码,实现判断,是否购买笔,条件:只要笔是黑色(black),就购买。

?不会了怎么办

1.使用if语句判断

2.条件为mypen == "black"

代码:

 1 <!DOCTYPE HTML>
 2 
 3 <html><head>
 4 
 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6 
 7 <title>if语句</title>
 8 
 9 <script type="text/JavaScript">
10 
11 var mypen = "black"; //定义变量mypen,存储笔的黑色。
12 
13  if(mypen=="black")
14 
15 {
16 
17 document.write("笔是黑色的,所以购买");
18 
19 }
20 
21 </script>
22 
23 </head>
24 
25 <body>
26 
27 </body>
28 
29 </html>
if 语句

 

4-2 二选一 (if...else语句)

if...else语句是在指定的条件成立时执行代码,在条件不成立时执行else后的代码。

语法:

if(条件)
{ 条件成立时执行的代码}
else
{条件不成立时执行的代码}

假设你应聘web前端技术开发岗位,如果你会HTML技术,你面试成功,欢迎加入公司,否则你面试不成功,不能加入公司。

代码表示如下:

<script type="text/javascript">
  var mycarrer = "HTML"; //mycarrer变量存储技能
  if (mycarrer == "HTML")
    { document.write("你面试成功,欢迎加入公司。");  }
  else  //否则,技能不是HTML
    { document.write("你面试不成功,不能加入公司。");}
</script>

任务

今天去看电影,如果有票就可以看电影,没有票电影看不成。在右边编辑器的第8、12行补充代码,使用if...else进行判断。

?不会了怎么办

if语句()里填写判断条件

else执行条件不成立语句

代码:

 1 <!DOCTYPE HTML>
 2 
 3 <html>
 4 
 5 <head>
 6 
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8 
 9 <title>if...else</title>
10 
11 <script type="text/JavaScript">
12 
13 function myfunction(){
14 
15 var ticket=document.getElementById("thedo").value;
16 
17 if(ticket==true)  
18 
19 {
20 
21 document.getElementById("show_results").innerHTML="有票,可以看电影。";
22 
23 }else{
24 
25 document.getElementById("show_results").innerHTML="没票,电影看不成。";
26 
27 }
28 
29 }
30 
31 </script>
32 
33 </head>
34 
35 <body>
36 
37 <select id="thedo" name="">
38 
39 <option value="0">没有票</option>
40 
41 <option value="1">有票</option>
42 
43 </select>
44 
45 <input type="submit" onclick="myfunction()" value="ok">
46 
47 <p id="show_results"></p>
48 
49 </body>
50 
51 </html>
if...else

 

4-3 多重判断(if..else嵌套语句)

要在多组语句中选择一组来执行,使用if..else嵌套语句。

语法:

if(条件1)
{ 条件1成立时执行的代码}
else  if(条件2)
{ 条件2成立时执行的代码}
...
else  if(条件n)
{ 条件n成立时执行的代码}
else
{ 条件1、2至n不成立时执行的代码}

假设数学考试,小明考了86分,给他做个评价,60分以下的不及格,60(包含60分)-75分为良好,75(包含75分)-85分为很好,85(包含75分)-100优秀。

代码表示如下:

 

结果:

 

任务

联合国世界卫生组织对年龄的划分标准, 44岁以下为青年;45岁至59·岁为中年人。60岁至89岁为老年人;90岁以上为长寿老年人。赵红今年99岁了,他属于那个年龄阶段的。使用if...else嵌套语句进行判断。

?不会了怎么办

多条件判断else if

最后判断使用else

代码:

 1 <!DOCTYPE HTML>
 2 
 3 <html>
 4 
 5 <head>
 6 
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8 
 9 <title>if...else</title>
10 
11 <script type="text/JavaScript">
12 
13 var myage =99;//赵红的年龄为99
14 
15 if(myage<=44)
16 
17   {document.write("青年");}
18 
19 else if(myage<=59)
20 
21   {document.write("中年人");}
22 
23 else if (myage<=89)
24 
25   {document.write("老年人");}
26 
27 else        
28 
29   {document.write("长寿老年人");}
30 
31 </script>
32 
33 </head>
34 
35 <body>
36 
37 </body>
38 
39 </html>
if...else

 

4-4 多种选择(Switch语句)

当有很多种选项的时候,switch比if else使用更方便。

语法:

switch(表达式)
{
case1:
  执行代码块 1
  break;
case2:
  执行代码块 2
  break;
...
casen:
  执行代码块 n
  break;
default:
  与 case值1 、 case值2...case值n 不同时执行的代码
}

语法说明:

Switch必须赋初始值,值与每个case值匹配。满足执行该 case 后的所有语句,并用break语句来阻止运行下一个case。

假设评价学生的考试成绩,10分满分制,我们按照每一分一个等级将成绩分等,并根据成绩的等级做出不同的评价。

代码如下:

 

执行结果:

评语: 及格,加油!

注意:记得在case所执行的语句后添加上一个break语句。否则就直接继续执行下面的case中的语句,看以下代码:

 

执行结果:

评语: 继续努力!
评语: 及格,加油!
评语: 凑合,奋进
评语: 很棒,很棒
评语: 高手,大牛

在上面的代码中,没有break停止语句,如果成绩是4分,则case 5后面的语句将会得到执行,同样,case6、7-10后面的语句都会得到执行。

任务

我们来做个周计划,周一、二学习理念知识,周三、四到企业实践,周五总结经验,周六、日休息和娱乐。请根据星期几做出选择,使用Switch语句完成,补充右边代码编辑器中第8、20、21行代码,完成星期几的判断。

?不会了怎么办

使用switch进行选择

case进行条件匹配

break 结束当前 case中的语句

代码:

 1 <!DOCTYPE HTML>
 2 
 3 <html>
 4 
 5 <head>
 6 
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8 
 9 <title>switch</title>
10 
11 <script type="text/JavaScript">
12 
13 var myweek = 4;//myweek表示星期几变量
14 
15 switch(myweek)
16 
17 {
18 
19  case 1:
20 
21  case 2:
22 
23  document.write("学习理念知识");
24 
25  break;
26 
27  case 3:
28 
29  case 4:
30 
31  document.write("到企业实践");
32 
33  break;
34 
35  case 5:
36 
37  document.write("总结经验");
38 
39  break;
40 
41  default:
42 
43  document.write("周六、日休息和娱乐");
44 
45 }
46 
47 </script>
48 
49 </head>
50 
51 <body>
52 
53 </body>
54 
55 </html>
switch

 

4-5 重复重复(for循环)

很多事情不只是做一次,要重复做。如打印10份试卷,每次打印一份,重复这个动作,直到打印完成。这些事情,我们使用循环语句来完成,循环语句,就是重复执行一段代码。

for语句结构:

for(初始化变量;循环条件;循环迭代)
{     
    循环语句 
 }

假如,一个盒子里有6个球,我们每次取一个,重复从盒中取出球,直到球取完为止。

<script type="text/javascript">
var num=1;
for (num=1;num<=6;num++)  //初始化值;循环条件;循环后条件值更新
{   document.write("取出第"+num+"个球<br />");
}
</script>

结果:

 

执行思路:

 

任务

我们有1,2,3...10不同面值的钱,使用for语句完成合计,看看我们一共有多少钱,请补充第8行代码,实现该功能。

?不会了怎么办

for语句,缺少"循环条件",mymeny<=10

for(mymeny=1;mymeny<=10;mymeny++)

代码:

 1 <!DOCTYPE HTML>
 2 
 3 <html>
 4 
 5 <head>
 6 
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8 
 9 <title>if...else</title>
10 
11 <script type="text/JavaScript">
12 
13 var mymeny,sum=0;//mymeny变量存放不同面值,sum总计
14 
15 for(mymeny=1;mymeny<=10;mymeny++)
16 
17 {
18 
19  
20 
21   sum= sum + mymeny;
22 
23 }
24 
25   document.write("sum合计:"+sum);
26 
27 </script>
28 
29 </head>
30 
31 <body>
32 
33 </body>
34 
35 </html>
if...else

 

4-6 反反复复(while循环)

和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足。

while语句结构:

while(判断条件)
{
    循环语句
 }

使用while循环,完成从盒子里取球的动作,每次取一个,共6个球。

<script type="text/javascript">
var num=0;  //初始化值
while (num<=6)   //条件判断
{
  document.write("取出第"+num+"个球<br />");
  num=num+1;  //条件值更新
}
</script>

任务

我们使用while语句,输出5个数字。补充第8行代码。

?不会了怎么办

while(mynum<=5)或while(mynum<6)

代码:

 1 <!DOCTYPE HTML>
 2 
 3 <html>
 4 
 5 <head>
 6 
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8 
 9 <title>while</title>
10 
11 <script type="text/javascript">
12 
13   var mynum =1;//mynum初值化数值为1
14 
15   while (mynum<=5)
16 
17   {
18 
19          document.write("数字:"+mynum+"<br/>");
20 
21     mynum=mynum+1;
22 
23    }
24 
25 </script>
26 
27 </head>
28 
29 <body>
30 
31 </body>
32 
33 </html>
while

 

4-7 来来回回(Do...while循环)

do while结构的基本原理和while结构是基本相同的,但是它保证循环体至少被执行一次。因为它是先执行代码,后判断条件。

do...while语句结构:

do
{
    循环语句
 }
while(判断条件)

我们试着输出5个数字。

<script type="text/javascript">
   num= 1;
   do
   {
     document.write("数值为:" +  num+"<br />");
     num++; //更新条件
   }
   while (num<=5)
</script>

执行结果:

 

为什么呢?我们来看下执行思路:

 

任务

我们使用do...while语句,输出6个数字。补充第8行和13行代码。

?不会了怎么办

do...while语句,因为至少被执行一次,所以要注意循环条件。

代码:

 1 <!DOCTYPE HTML>
 2 
 3 <html>
 4 
 5 <head>
 6 
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8 
 9 <title>do...while</title>
10 
11 <script type="text/javascript">
12 
13    var mynum =6;//mynum初值化数值为6
14 
15          do
16 
17          {
18 
19          document.write("数字:"+mynum+"<br/>");
20 
21          mynum=mynum-1;
22 
23          }
24 
25          while(mynum<=6 && mynum>=1)
26 
27          </script>
28 
29 </head>
30 
31 <body>
32 
33 </body>
34 
35 </html>
do...while

 

4-8 退出循环break

在while、for、do...while、while循环中使用break语句退出当前循环,直接执行后面的代码。

格式如下:

for(初始条件;判断条件;循环后条件值更新)
{
  if(特殊情况)
  {break;}
  循环代码
}

当遇到特殊情况的时候,循环就会立即结束。看看下面的例子,输出10个数,如果数值为5,就停止输出。

 

执行结果:

 

注:当num=5的时候循环就会结束,不会输出后面循环的内容。

任务

考试成绩输出,如果成绩及格继续输出下个成绩,如果成绩不及格,退出并且后面成绩不输出, 我们使用break语句,退出循环。

?不会了怎么办

break语句,退出循环。

代码:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 
 3 <html xmlns="http://www.w3.org/1999/xhtml">
 4 
 5 <head>
 6 
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8 
 9 <title>break</title>
10 
11 <script type="text/JavaScript">
12 
13 var mynum =new Array(70,80,66,90,50,100,89);//定义数组mynum并赋值
14 
15 var i=0;
16 
17 while(i<mynum.length)
18 
19 {
20 
21   if(mynum[i]<60)
22 
23    {
24 
25     document.write("成绩"+mynum[i]+"不及格,不用循环了"+"<br>");
26 
27     break;
28 
29    }
30 
31   document.write("成绩:"+mynum[i]+"及格,继续循环"+"<br>");
32 
33   i=i+1;
34 
35  
36 
37 }
38 
39 </script>
40 
41 </head>
42 
43 <body>
44 
45 </body>
46 
47 </html>
break

 

4-9 继续循环continue

continue的作用是仅仅跳过本次循环,而整个循环体继续执行。

语句结构:

for(初始条件;判断条件;循环后条件值更新)
{
  if(特殊情况)
  { continue; }
 循环代码
}

上面的循环中,当特殊情况发生的时候,本次循环将被跳过,而后续的循环则不会受到影响。好比输出10个数字,如果数字为5就不输出了。

 

执行结果:

 

注:上面的代码中,num=5的那次循环将被跳过。

 

任务

考试成绩输出,如果成绩及格继续输出下个成绩,如果成绩不及格,则不输出该成绩,我们使用continue语句完成,补充第14行代码。

?不会了怎么办

continue语句,退出本次循环,继续执行后面的循环。

代码:

 1 <!DOCTYPE HTML>
 2 
 3 <html>
 4 
 5 <head>
 6 
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8 
 9 <title>continue</title>
10 
11 <script type="text/JavaScript">
12 
13  var mynum =new Array(70,80,66,90,50,100,89);//定义数组mynum并赋值
14 
15  var i;
16 
17  for(i=0;i<mynum.length;i++)
18 
19  {
20 
21        if(mynum[i]<60)
22 
23     {
24 
25          document.write("成绩不及格,不输出!"+"<br>");
26 
27     continue;
28 
29          }
30 
31          document.write("成绩:"+mynum[i]+"及格,输出!"+"<br>");
32 
33 }
34 
35 </script>
36 
37 </head>
38 
39 <body>
40 
41 </body>
42 
43 </html>
continue

 

4-10 编程练习

在一个大学的编程选修课班里,我们得到了一组参加该班级的学生数据,分别是姓名、性别、年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦。

学生信息如下:

    ('小A','女',21,'大一'),  ('小B','男',23,'大三'),

    ('小C','男',24,'大四'),  ('小D','女',21,'大一'),

    ('小E','女',22,'大四'),  ('小F','男',21,'大一'),

    ('小G','女',22,'大二'),  ('小H','女',20,'大三'),

    ('小I','女',20,'大一'),  ('小J','男',20,'大三')

任务

第一步: 把这些数据组成一个数组,方便我们之后操作哦。

提示: 使用二维数组。

第二步: 筛选数据吧,首先找出都是大一的所有信息 ;

第三步: 最后再一次筛选上一步得到的数据,打印出都是女生的姓名 ;

提示: 可以用switch 或 if 语句进行筛选。

?不会了怎么办

代码:

 1 <!DOCTYPE  HTML>
 2 
 3 <html >
 4 
 5 <head>
 6 
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8 
 9 <title></title>
10 
11 <script type="text/javascript">
12 
13 var infos = [
14 
15     ['小A','',21,'大一'],
16 
17          ['小B','',23,'大三'],
18 
19          ['小C','',24,'大四'],
20 
21          ['小C','',24,'大四'],
22 
23          ['小D','',21,'大一'],
24 
25          ['小E','',22,'大四'],
26 
27          ['小F','',21,'大一'],
28 
29          ['小G','',22,'大二'],
30 
31          ['小H','',20,'大三'],
32 
33          ['小I','',20,'大一'],
34 
35          ['小J','',20,'大三']
36 
37 ];
38 
39 for(var i = 0; i < infos.length; i++) {
40 
41          if(infos[i][3] === "大一" && infos[i][1] === "") {
42 
43                    document.write(infos[i][0] + "<br />");
44 
45          }
46 
47 }
48 
49 </script>
50 
51 </head>
52 
53 <body>
54 
55 </body>
56 
57 </html>
4-10编程练习

 

 

 

posted @ 2015-05-20 12:22  竹立荷塘  阅读(338)  评论(0编辑  收藏  举报