黑马程序员技术交流社区

标题: javaScript [打印本页]

作者: 朱烈葵    时间: 2012-8-1 21:25
标题: javaScript
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html140/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Sample Page!</title>
<script language="JavaScript" type="text/javascript">
<!--
var msg="\nswitch流程控制语句 : \n\n";
//响应按钮的onclick事件处理程序
function Test()
{
  var year=window. prompt("请输入您的军龄(整数值,0表示未参军) : ",25);
  
  var army;
  switch(year)
  {

    case 0:
      army="平民";
      break;
    case 1:
      army="列兵";
      break;
    case 2:
      army="上等兵";
      break;
    case 3:
    case 4:
    case 5:
      army="一级士官";
      break;
    case 6:
    case 7:
    case 8:
      army="二级士官";
      break;
    default:
      if (year>8)
        army="中高级士官";
  }
   //alert(year);
  msg+="军龄 : "+year+"年\n";
  msg+="结论 : "+army+"\n";
  alert(msg);
}
-->
</script>
</head>
<body>
<center>
<form>
  <input type=button value="测试" onClick="Test()">
</form>
</center>
</body>
</html>

本来按java的思想只要符合条件就会弹出对应的动作,可是这里除了输入8以上能有用,其他均为没找到?奇怪,不懂
作者: 王晓龙    时间: 2012-8-1 22:02
switch(year)里面应该+个加号变成:switch(+year)
因为year 是字符串,你得把它变成number.+year 可以理解为 0+year
实际上就是把year变成了number
作者: 朱烈葵    时间: 2012-8-1 22:15
王晓龙 发表于 2012-8-1 22:02
switch(year)里面应该+个加号变成:switch(+year)
因为year 是字符串,你得把它变成number.+year 可以理解为 ...

这不是java不存在这个问题
作者: 王晓龙    时间: 2012-8-1 22:18
你试试看就知道啦
作者: 王晓龙    时间: 2012-8-1 22:18
朱烈葵 发表于 2012-8-1 22:15
这不是java不存在这个问题

你试试看就知道啦
作者: 朱烈葵    时间: 2012-8-1 22:18
版主 我上班去了,不要扣我技术分了,我明天晚上回来看

作者: 田建    时间: 2012-8-1 22:50
朱烈葵 发表于 2012-8-1 22:18
版主 我上班去了,不要扣我技术分了,我明天晚上回来看

呵呵  安心上班吧,不会扣的!
作者: pphdsny3    时间: 2012-8-1 23:13
window.prompt()得到的类型是字符串,改成下面这样就能得到你要的结果了:
  1. <!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0//EN"
  2. "http://www.w3.org/TR/REC-html140/strict.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  6. <title>Sample Page!</title>
  7. <script language="JavaScript" type="text/javascript">
  8. <!--
  9. var msg="\nswitch流程控制语句 : \n\n";
  10. //响应按钮的onclick事件处理程序
  11. function Test()
  12. {
  13.   var year=window. prompt("请输入您的军龄(整数值,0表示未参军) : ",25);
  14.   var army;
  15.   switch(year)
  16.   {

  17.     case "0":
  18.       army="平民";
  19.       break;
  20.     case "1":
  21.       army="列兵";
  22.       break;
  23.     case "2":
  24.       army="上等兵";
  25.       break;
  26.     case "3":
  27.     case "4":
  28.     case "5":
  29.       army="一级士官";
  30.       break;
  31.     case "6":
  32.     case "7":
  33.     case "8":
  34.       army="二级士官";
  35.       break;
  36.     default:
  37.       if (year>8)
  38.         army="中高级士官";
  39.   }
  40.    //alert(year);
  41.   msg+="军龄 : "+year+"年\n";
  42.   msg+="结论 : "+army+"\n";
  43.   alert(msg);
  44. }
  45. -->
  46. </script>
  47. </head>
  48. <body>
  49. <center>
  50. <form>
  51.   <input type=button value="测试" onClick="Test()">
  52. </form>
  53. </center>
  54. </body>
  55. </html>

复制代码

作者: 朱烈葵    时间: 2012-8-2 20:12
黑马王鹏 发表于 2012-8-1 23:13
window.prompt()得到的类型是字符串,改成下面这样就能得到你要的结果了:

问题是解决了,可是是为什么呢?为什么改变成字符串就可以呢?
作者: 朱烈葵    时间: 2012-8-2 20:12
田建 发表于 2012-8-1 22:50
呵呵  安心上班吧,不会扣的!

谢了·······················
作者: 朱烈葵    时间: 2012-8-2 20:13
王晓龙 发表于 2012-8-1 22:18
你试试看就知道啦

我试过了,没效果
作者: pphdsny3    时间: 2012-8-3 12:42
朱烈葵 发表于 2012-8-2 20:12
问题是解决了,可是是为什么呢?为什么改变成字符串就可以呢?

因为window. prompt输入的类型就是字符类型,字符串之间的匹配肯定是没问题的啦,至于跟数字匹配为啥有问题我也不是很清楚....等高人解答吧!
作者: 朱烈葵    时间: 2012-8-3 19:54
黑马王鹏 发表于 2012-8-3 12:42
因为window. prompt输入的类型就是字符类型,字符串之间的匹配肯定是没问题的啦,至于跟数字匹配为啥有问 ...

原来是这样啊,不过谢谢你啦
作者: 朱烈葵    时间: 2012-8-3 19:55
问题已解决!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2