显示underfined的问题

ljsbwcwt 2008-07-25 10:10:59
<script type="text/javascript" language="javascript">
<!--
function test()
{
var year=window.prompt("请输入您已读了几年书?",9);
var army;
switch(year)
{
case 0:
army="您还没有上学吗?";
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
army="看来你还了读小学哦!";
break;
case 7:
case 8:
case 9:
army="你已完成了九年义务教育吗?";
break;
default:
if (year>16)
army="看来你的知识水平已经很高了。";
}
msg += "你读了" + year + "年书,\n";
msg += army + "\n";
alert(msg);
window.close()
}
-->
</script>

____________________________________________________________________________
army为定义过的变量,但显示结果为underfined为何?

...全文
568 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljsbwcwt 2008-07-26
  • 打赏
  • 举报
回复
谢谢10楼和12楼
Msxindl_Com 2008-07-26
  • 打赏
  • 举报
回复
搞得太复杂了.楼主你代码改成这样不行吗,为什么一定要用switch呢?

<script language="javascript">
<!--
function test(){
var army="";
var msg="";
var year=prompt("请输入您已读了几年书?",9);
if(year==0)
army="您还没有上学吗?";
if(year>=1&&year<=6)
army="看来你还在读小学哦!";
if(year>=7&&year<=9)
army="你已完成了九年义务教育吗?";
if(year>16)
army="看来你的知识水平已经很高了。";
msg="你读了"+year+"年书,\n"+army;
alert(msg);
}
-->
</script>
<a href="javascript:test()">test</a>
lawrendc 2008-07-26
  • 打赏
  • 举报
回复
楼上的已经跟你说得很清楚了

为什么 army显示不了

因为你在switch语句的时候没有对你输入的值进行类型转换 也就是说输入的不是数值类型 是字符串类型

你的所有条件都比较都不会成功

所以 即使你army已经定义了的

但在javascript中如果一个变量你定义了 但没有赋初始值 那么他的值就为undefined

所以 ...
icecell 2008-07-26
  • 打赏
  • 举报
回复
msg += "你读了" + year + "年书,\n";
msg += army + "\n";

改成
msg = "你读了" + year + "年书,\n";
msg += army + "\n";
nicholsky 2008-07-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ljsbwcwt 的回复:]
楼上的老兄,我的问题是输入的年份是可以显示的,但army的为字符串的值显示不了?
[/Quote]

你有没试过我10楼的代码,没试过又说不行,我在你的switch中作了类型转换,Number()或parseInt()转换成数字,又或者像xiaolei1982说的把所有的case x改成case "x",JS的switch没有自动强制转换类型,12楼的蜗牛也是牛也说得很清楚。
ljsbwcwt 2008-07-25
  • 打赏
  • 举报
回复
楼上的老兄,我的问题是输入的年份是可以显示的,但army的为字符串的值显示不了?
nicholsky 2008-07-25
  • 打赏
  • 举报
回复
一:msg未定义就进行+=操作所以报错
二:prompt得出的是字符串,用在switch时不会强制转换,要自己转换。


<script type="text/javascript">
new function test(){
var year = window.prompt("请输入您已读了几年书?",9);
var army, msg="";
switch(Number(year)){
case 0:
army="您还没有上学吗?";
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
army="看来你还了读小学哦!";
break;
case 7:
case 8:
case 9:
army="你已完成了九年义务教育吗?";
break;
default:
army = year>16 ? "看来你的知识水平已经很高了。" : "请输入数字";
}
msg += "你读了" + year + "年书,\n";
msg += army + "\n";
alert(msg);
window.close();
}
</script>
xiaolei1982 2008-07-25
  • 打赏
  • 举报
回复
case '9':
ljsbwcwt 2008-07-25
  • 打赏
  • 举报
回复
你只是加了这句 alert(army);但弹出来的信息还是underfined,显示不了相应的字符串
xiaolei1982 2008-07-25
  • 打赏
  • 举报
回复
<script type="text/javascript" language="javascript">

var msg="";

function test()
{
var year=window.prompt("ÇëÊäÈëÄúÒѶÁÁ˼¸ÄêÊ飿",9);
var army;
switch(year)
{
case 0:
army="Äú»¹Ã»ÓÐÉÏѧÂð£¿";
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
army="¿´À´Ä㻹Á˶ÁСѧŶ£¡";
break;
case 7:
case 8:
case '9':
army="bb";
break;
default:
if (year>16)
army="¿´À´ÄãµÄ֪ʶˮƽÒѾ­ºÜ¸ßÁË¡£";
}
alert(army);
msg += "Äã¶ÁÁË" + year + "ÄêÊé,\n";

msg += army ;
alert(msg);
}

test()
</script>
变成字符串比如‘9’
tiantangyrb 2008-07-25
  • 打赏
  • 举报
回复
要定义 msg
ljsbwcwt 2008-07-25
  • 打赏
  • 举报
回复
<script type="text/javascript" language="javascript">
<!--
var msg="";
function test()
{
var year=window.prompt("请输入您已读了几年书?",9);
var army;
switch(year)
{
case 0:
army="您还没有上学吗?";
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
army="看来你还了读小学哦!";
break;
case 7:
case 8:
case 9:
army="你已完成了九年义务教育吗?";
break;
default:
if (year>16)
army="看来你的知识水平已经很高了。";
}
msg += "你读了" + year + "年书,\n";
msg += army + "\n";
alert(msg);
}
-->
</script>

msg也定义过的
xiaolei1982 2008-07-25
  • 打赏
  • 举报
回复
没定义的不是army而是msg
xiaolei1982 2008-07-25
  • 打赏
  • 举报
回复
<script type="text/javascript" language="javascript">
<!--
function test()
{
var year=window.prompt("ÇëÊäÈëÄúÒѶÁÁ˼¸ÄêÊ飿",9);
var army;
var msg;
switch(year)
{
case 0:
army="Äú»¹Ã»ÓÐÉÏѧÂð£¿";
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
army="¿´À´Ä㻹Á˶ÁСѧŶ£¡";
break;
case 7:
case 8:
case 9:
army="ÄãÒÑÍê³ÉÁ˾ÅÄêÒåÎñ½ÌÓýÂð£¿";
break;
default:
if (year>16)
army="¿´À´ÄãµÄ֪ʶˮƽÒѾ­ºÜ¸ßÁË¡£";
}
msg += "Äã¶ÁÁË" + year + "ÄêÊé,\n";
msg += army + "\n";
alert(msg);
window.close()
}
test();
-->
</script>
ljsbwcwt 2008-07-25
  • 打赏
  • 举报
回复
不对,var army="";的话,后面的值就传递不了,显示也为空了.
s_liangchao1s 2008-07-25
  • 打赏
  • 举报
回复
var army = '';

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧