首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

3.9  使用多级条件

有时候,在一个条件测试中需要两个以上的选择;then和else有时候是不够的。尽管可以嵌套if语句,但更简单的方法常常是使用switch/case语句。switch/ case构造允许针对多个值检查一个变量。如图3-7所示,这个脚本根据用户点击的按钮,在警告对话框中返回三段不同的总统语录之一。脚本3-11是HTML,这相当简单。脚本3-12是JavaScript,它使用switch/case构造区分不同的总统。

脚本3-11  这段HTML建立多级条件的页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

   <title>Switch/Case handling</title>

   <script language="Javascript" type="text/javascript" src="script09.js">

   </script>

</head>

<body bgcolor="#FFFFFF">

<h2>Famous Presidential Quotes</h2>

<form action="#">

   <input type="button" value="Lincoln" />

   <input type="button" value="Kennedy" />

   <input type="button" value="Nixon" />

</form>

</body>

</html>

脚本3-12  这种条件语句允许针对多种可能性进行检查

window.onload = initAll;

function initAll() {

   for (var i=0; i< document.forms[0].elements.length; i++) {

     var thisElement = document.forms[0].elements[i];

       if (thisElement.type == "button") {

         thisElement.onclick = saySomething;

     }

   }

}

function saySomething() {

   switch(this.value) {

     case "Lincoln":

       alert("Four score and seven years ago...");

       break;

     case "Kennedy":

       alert("Ask not what your country can do for you...");

       break;

     case "Nixon":

       alert("I am not a crook!");

       break;

     default:

   }

}

使用switch/case语句的步骤如下:

(1) window.onload = initAll;

当装载页面时,调用initAll()函数。

(2) function initAll() {

for (var i=0; i< document.forms[0].elements.length; i++) {

var thisElement = document.forms[0].elements[i];

if (thisElement.type == "button") {

thisElement.onclick = saySomething;

}

在这个函数中,我们循环遍历页面表单中的所有字段。对于每个字段,循环会查看字段的类型。如果类型是按钮,那么就添加一个调用saySomething()函数的onclick处理程序。

(3) function saySomething() {

这一行开始saySomething()函数。

(4) switch(this.value) {

this对象的值用作switch()的参数。这个值将决定执行以下case语句中的哪一个。

(5) case "Lincoln":

alert("Four score and seven years ago...");

break;

如果this对象的值是Lincoln,那么显示这个警告消息。如果用户点击Lincoln,那么我们就会进入这里的代码。但是,在这里已经执行了我们需要的操作,所以我们希望离开这个switch语句。为此,需要使用break语句。如果没有break,就会继续执行下面的所有代码。尽管在某些情况下继续执行下面的分支是我们需要的效果,但是在这个示例中不应该这么做。

(6) case "Kennedy":

  alert("Ask not what your country can do for you...");

  break;

如果用户点击Kennedy,就会进入这个case块。

(7) case "Nixon":

  alert("I am not a crook!");

  break;

最后,如果用户点击Nixon,就会进入这里,这里弹出另一个警告对话框,然后退出switch语句。

(8) default:

如果用户的输入与上面的条件都不匹配,那么就会执行这里的代码。也就是说,如果switch值与任何case值都不匹配,就会进入default部分。default块是可选的,但是包含default块是一种好习惯,可以以防万一。在这个脚本中,这里没有要执行的代码,因为我们应该不可能进入default部分。

(9) }

这个后花括号结束switch语句。

ü提示

q 也可以向switch语句传递字符串之外的其他值。可以在switch语句中使用数字值,甚至对数学计算的结果进行评估。但是,如果结果应该是数字,那么要确保case语句是匹配的——case语句应该检查数字,而不是字符串(例如5,而不是“5”)。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论