首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要求在javascript中的条件语句之前输入

要求在javascript中的条件语句之前输入
EN

Stack Overflow用户
提问于 2018-03-02 06:03:47
回答 3查看 47关注 0票数 0

在本练习中,我在需要输入的地方有一个提示符。因此,如果用户没有输入任何内容,它将再次询问,直到给出响应。当最终给出响应时,它将遍历条件语句列表。如果在第一个提示下给出响应,它将简单地遍历该条件语句列表。我好像不能让它起作用。我在这里做错了什么?

代码语言:javascript
复制
var question =  prompt("What programming language are you currently learning?"); 
var questionUpper = question.toUpperCase();
var firstCap =  question.charAt(0).toUpperCase() + question.slice(1).toLowerCase();
while (true) {
    if (question === '') {
      var test = prompt("Please enter a programming language.");
    } else {
      break;
    } 
  if (questionUpper === 'HTML') {
      alert(questionUpper + ' is a good language to start with.');
    } else if (questionUpper === 'CSS') {
      alert(questionUpper + ' helps HTML look good.');
    } else if (firstCap === 'Javascript') {
      alert(firstCap + ' is a fun language to learn after HTML and CSS.');
    } else if (firstCap === 'Python') {
      alert(firstCap + ' is a good language, too.');
    } else  {
      alert("At least you're learning something.");	
    }
}

EN

回答 3

Stack Overflow用户

发布于 2018-03-02 06:14:48

我认为错误出在while循环中。您正在将答案赋值给变量"test",但条件是检查"question“的值。

代码语言:javascript
复制
var question =  prompt("What programming language are you currently learning?"); 

while (true) {
    if (question === '') {
        question = prompt("Please enter a programming language.");
    } else {
        break;
    }
}

var questionUpper = question.toUpperCase();
var firstCap =  question.charAt(0).toUpperCase() + question.slice(1).toLowerCase();

if (questionUpper === 'HTML') {
    alert(questionUpper + ' is a good language to start with.');
} else if (questionUpper === 'CSS') {
    alert(questionUpper + ' helps HTML look good.');
} else if (firstCap === 'Javascript') {
    alert(firstCap + ' is a fun language to learn after HTML and CSS.');
} else if (firstCap === 'Python') {
    alert(firstCap + ' is a good language, too.');
} else  {
    alert("At least you're learning something.");   
}

我还将大写字母移到了循环之后,以使其有效。

票数 0
EN

Stack Overflow用户

发布于 2018-03-02 06:23:56

为了达到预期效果,您可以使用switch case选项

代码语言:javascript
复制
var question =  prompt("What programming language are you currently learning?"); 
var questionUpper = question.toUpperCase();
var firstCap =  question.charAt(0).toUpperCase() + question.slice(1).toLowerCase();

switch(questionUpper){
  case 'HTML':
    alert(questionUpper + ' is a good language to start with.');
    break;
 case 'CSS':
    alert(questionUpper + ' is a good language to start with.');
    break;
 case 'JAVASCRIPT':
    alert(questionUpper + ' is a good language to start with.');
    break;
 case 'PYTHON':
    alert(questionUpper + ' is a good language to start with.');
    break;
  default:
     alert("At least you're learning something.");  
}

The sample in CodePen

票数 0
EN

Stack Overflow用户

发布于 2018-03-02 06:46:00

这看起来使用语言对象表示解决问题更有意义(也使其更易于理解和编辑)。例如:

代码语言:javascript
复制
var langs = {
  html: 'HTML is a good language to start with.',
  css: 'CSS helps HTML look good.',
  javascript: 'Javascript is a fun language to learn after HTML and CSS',
  python: 'Python is a good language, too.'
}

// ask initial question
var answer =  prompt('What programming language are you currently learning?')

// ask follow up until answer is given
while(answer.length <= 0){
  answer = prompt('Please enter a programming language.')
}

// deal with answer
var lower = answer.toLowerCase()
if(langs[lower]){
  alert(langs[lower])
}else{
  alert('At least you\'re learning something.')
}

这样,您就可以修改langs对象,使其包含每种语言的任何属性。也许他们有与其他问题相关的文本,或者您希望与每种语言关联的其他变量。这使得添加或删除语言或从视图中分离数据变得更容易,从而允许您在不更改任何逻辑的情况下轻松地从数据库中获取语言数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49059415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档