编程论坛's Archiver

teapost 发表于 2008-4-25 17:07

请教一个Prompt 返回值的问题? 谢谢

今天做题,有个问题不清楚:
====================代码======================

<html>
<head>
<script language="JavaScript">
function jihua()   //定义函数 jihua()
{
   var a=prompt("请输入今天星期几","1");
   
   if(a>="1"&&a<="7")
   {
     if(a=="1")
         document.write("今天做第一章的作业\n");
         if(a=="2")
             document.write("今天做第二章的作业\n");
         if(a=="3")
        document.write("今天做第三章的作业\n");
         if(a=="4")
            document.write("今天做第四章的作业\n");
         if(a=="5")
         document.write("今天做第五章的作业\n");
         if(a=="6")
            document.write("今天做第六章的作业\n");
         if(a=="7")
            document.write("今天做第七章的作业\n");
   }
   else
     document.write("您的输入有误");
}
</script>
</head>
<body>
  <input name="zuoyeanpai" type="button" onClick="jihua()" value="查看计划">
</body>
</html>
====================代码===========================
这里想请教大家, 我输入 1-7 没有问题,但是输入 8或9 就会提示 你输入有误,但是一旦输入10或10以上的数字 就不会提示错误, 我 后来添加  a=parseInt(a); 就正常了,请问前面的问题是怎么回事啊~~? 谢谢

kingyar 发表于 2008-4-26 18:30

prompt返回的是字符串,如果在prompt中输入了:10,返回的是字符串:"10".
这是代码运行到: if(a>="1"&&a<="7"),此时实际上是比较:
"10" > "1" && "10" <= "7"
当两个字符串比较时,是一个字符一个字符比较的,在这里就是:

首先比较"10"和"1":
1. "1" == "1"
2. "0" > ""
结果就是: "10" > "1" == true

然后比较"10" 和 "7":
1. "1" < "7"
结果就是: "10" < "7" == true

所以:a>="1"&&a<="7" 的结果就是true,就开始执行if块中的代码,而不会执行eles分支中的代码。

一句话,字符串的大小比较与数字的大小比较是不一样的。

heyufu 发表于 2008-4-26 23:11

prompt返回的是字符串

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.