2017-06-16 293 views
0

憋屈一个javascript开关分配。我对这些东西还是比较陌生的,但似乎无法在课本或在线上找到任何可以使本程序正常工作的东西。任务是切换if语句来切换代码。任何帮助或建议将不胜感激。JavaScript的switch语句的年龄范围

var myAge = prompt("Enter your age:", "30"); 

switch (myAge) { 

    case myAge! >= 0: 
    case myAge <= 10: 
    document.write("myAge is NOT between 0 and 10 <br />"); 

    case myAge >= 0: 
    case myAge <= 10: 
    document.write("myAge is between 0 and 10 "); 
    break; 

    case myAge >= 80: 
    case mmyAge <= 10: 
    document.write("myAge is 80 or above or 10 or below "); 
    break; 

    case myAge >= 30: 
    case myAge <= 39: 
    document.write("myAge is between 30 and 39 "); 
    break; 

    case myAge >= 80: 
    case myAge <= 89: 
    document.write("myAge is between 80 and 89 "); 
    break; 
} 
+1

你错过了一个破';!'在第一种情况下 –

+1

你需要用'开关(真){'来匹配您的布尔表达式的情况下和'>'是不是有效的运营商 –

+0

@Community ...很抱歉,但是这显然是一个不同的问题...让我们把它放在这样:你认为什么cameragrl37从87输入期望...... 我会说,他预计3封邮件......这个?不能写入一个开关! – fedeghe

回答

0

确保您使用的是int,而不是一个字符串,以防万一做:

var myAge = parseInt(prompt("Enter your age:", "30")); 

并确保您添加break;语句所有case秒。

第一case删除!字符:myAge!myAge

你得到什么确切的错误?

0

在第一个“案例myAge”比较操作不起作用。如果你试图说它不等于,你应该把!=,而不是!> =。

0

我认为可以工作......但

------------------------- OLD ANSWER

尝试以下;顺便说一句你确定你需要document.write

var myAge = ~~prompt("Enter your age:", "30"), 
    msg = []; 
switch (true) { 

    case myAge < 0 && myAge > 10: 
     msg.push("myAge is NOT between 0 and 10"); 

    case myAge >= 0 && myAge <= 10: 
     msg.push("myAge is between 0 and 10"); 

    case myAge >= 80 || myAge <= 10: 
     msg.push("myAge is 80 or above or 10 or below"); 

    case myAge >= 30 && myAge <= 39: 
     msg.push("myAge is between 30 and 39"); 

    case myAge >= 80 && myAge <= 89: 
     msg.push("myAge is between 80 and 89"); 
} 
document.write(msg.join('<br />')); 

,但不是,这里的原因:首先 是很清楚,你想获得更多的那一个验证消息; 偏偏这个不能写在一台交换机的原因运行不止一个,你应该删除break;但是这意味着第一个满足的原因不管条件如何要执行所有followinfg的...

说,你有移动到“多,如果”可能看起来如下:

var myAge = parseInt(prompt("Enter your age:", "30"), 10), 
    msg = []; 

if (myAge < 0 && myAge > 10) 
    msg.push("myAge is NOT between 0 and 10"); 
if (myAge >= 0 && myAge <= 10) 
    msg.push("myAge is between 0 and 10"); 
if (myAge >= 80 || myAge <= 10) 
    msg.push("myAge is 80 or above or 10 or below"); 
if (myAge >= 30 && myAge <= 39) 
    msg.push("myAge is between 30 and 39"); 
if (myAge >= 80 && myAge <= 89) 
    msg.push("myAge is between 80 and 89"); 

console.log(msg.join("\n")); 
+0

缺少'break;'? –

+0

没有......如果他需要级联...因为它看起来 – fedeghe

0

你失踪break和错字mmyAge。并传递给switch

var myAge = parseInt(prompt("Enter your age:", "30")); 
 
age(myAge); 
 
function age(myAge){ 
 

 
    switch (true) { 
 
     
 
     case (myAge >= 0 && myAge <=10): 
 
      document.write("myAge is NOT between 0 and 10 <br />"); 
 
     break; 
 
     case myAge >= 0 && myAge <= 10: 
 
      document.write("myAge is between 0 and 10 "); 
 
      break; 
 

 
     case myAge >=80 && myAge <=10: 
 
      document.write("myAge is 80 or above or 10 or below "); 
 
      break; 
 

 
     case myAge >= 30 && myAge <=39: 
 
      document.write("myAge is between 30 and 39 ");    
 
      break; 
 

 
     case myAge >= 80 && myAge <= 89: 
 
      document.write("myAge is between 80 and 89 "); 
 
      break; 
 
     default: 
 
       console.log(myAge); 
 
     } 
 
     
 
    }

+0

感谢我错过了:)现在都工作,你们所有的岩石。这是我在这里的第一次经历,它确实帮助了我。 :) – cameragrl37

+0

你也可以接受答案。如果有帮助 –