【问题标题】:Javascript "Not equal to" feature from a prompt提示中的 Javascript“不等于”功能
【发布时间】:2021-06-03 23:00:58
【问题描述】:

我是 Javascript 的初学者,我只尝试使用非常基础的东西。我试图只允许两个特定单词被接受到变量提示中。如果输入了除了两个允许的单词之外的任何其他内容,我想显示一条消息,说明只允许两个单词,然后再试一次,直到它正确为止。这是我目前正在使用的代码。直到最后一节,一切都运行良好

console.log("Start of the program");

var letters = /^[a-zA-Z]*$/;

var number= prompt ("Which number between 1 and 30 do you want to translate?");
    
    while (number <1) {
        alert("Please type an integer number between 1 and 30");
        var number= prompt ("Which number between 1 and 30 do you want to translate?");
}
    while (number >30) { 
        alert("Please type an integer number between 1 and 30");
        var number= prompt ("Which number between 1 and 30 do you want to translate?");
}

    while (letters.test(number)) {
        alert("Please use digits");
        var number= prompt ("Which number between 1 and 30 do you want to translate?");
}

if (number => 1 && number <= 30) {
    var lang= prompt ("Which language do you want to translate into, French or German?");
}
while(lang != "French" != "German") {
    alert("Only French or German is allowed");
    var lang= prompt ("Which language do you want to translate into, French or German?");
}

即使我输入“法语”或“德语”,我仍然会不断收到“仅允许法语或德语”警报。如果我将“while (lang !=)”更改为“if (lang!=)”,无论是否正确使用了法语或德语,我都会收到一次警报,然后程序继续。我也希望它在我当前使用此代码的结果中不区分大小写(接受法语、法语、法语等)

if (number == 1 && lang == "French") {
        alert("The translation is " +frenchNumbers[1]);

任何帮助将不胜感激

谢谢,布拉德

【问题讨论】:

  • @Kinglish,这需要&amp;&amp;,而不是||

标签: javascript variables prompt case-sensitive


【解决方案1】:

你在这里缺少&amp;&amp; lang

while(lang != "French" &amp;&amp; lang != "German")

JavaScript(也不是我目前知道的任何其他语言)允许您像这样将一个变量与两个不同的值进行比较,而无需使用布尔运算符,然后重复变量的名称。

有趣的是,lang != "French" != "German" 是有效的语法,但它并不代表您的想法。

首先将lang != "French" 评估为truefalse。那么接下来会发生什么:

true != "German"false != "German"

...这两个都是真的。

【讨论】:

  • 完美!非常感谢您的快速回复,完美运行。我确信可能有一种更简单的方法可以做到这一点,但我已经更新了该部分,所以现在是:while(lang != "French" && lang != "french" && lang != "FRENCH" && lang != "德语" && lang != "german" && lang != "GERMAN" ) { alert("只允许法语或德语"); var lang= prompt ("你想翻译成哪种语言,法语还是德语?");您对我需要做什么有什么建议吗?例如,结果部分将允许“French”或“french”或“FRENCH”?谢谢,布拉德
  • 如果你想花哨并使用正则表达式,你可以做!/^(french|german)$/i.test(lang),它也很容易扩展到更长的语言列表。 “i”表示比较不区分大小写。
  • 对不区分大小写的测试经常做的另一件事是在进行任何比较之前执行lang = lang.toLowerCase()lang = lang.toUpperCase() 之类的操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多