我是Javascript的新手,正在尝试通过制作一个小程序来学习,在这个程序中输入占星星座、行星和房屋来制作一个madlibs类型的小故事。为此,我在一个函数中放入了三个switch语句。
不确定这是不是太多的switch语句,但是,当我在Chrome上加载它时,有时我只得到text,有时我得到text和text2,有时我只得到text3。
有人知道为什么会这样吗?我只是在一个函数中有太多switch语句吗?我在网上搜索,但找不到一个函数中允许有多少个。
function tellMeaStory() {
var text;
var text2;
var text3;
var sign = document.getElementById("mySign").value;
var planet = document.getElementById("myPlanet").value;
var house = document.getElementById("myHouse").value;
switch(sign) {
case "Aries", "aries":
text = "red";
break;
case "Taurus", "taurus":
text = "calm";
break;
case "Gemini", "gemini":
text = "quirky";
break;
case "Cancer", "cancer":
text = "moody";
break;
case "Leo", "leo":
text = "hungry";
break;
default:
text = "sign";
}
switch(planet) {
case "Sun", "sun":
text2 = "hero";
break;
case "Moon", "moon":
text2 = "mother";
break;
case "Mercury", "mercury":
text2 = "twin";
break;
case "Venus", "venus":
text2 = "courtesan";
break;
case "Mars", "mars":
text2 = "soldier";
break;
default:
text2 = "planet";
}
switch(house) {
case "one", "One":
text3 = "hole";
break;
case "two", "Two":
text3 = "buffet";
break;
case "three", "Three":
text3 = "database";
break;
case "four", "Four":
text3 = "stomach";
break;
case "five", "Five":
text3 = "wilderness";
break;
default:
text3 = "house";
}
document.getElementById("demo").innerHTML += "You are a " + text + " " + text2 + " in a " + text3;
}
<input id="mySign" type="text" value="Enter your sign">
<input id="myPlanet" type="text" value="Enter your planet">
<input id="myHouse" type="text" value="Enter your house">
<button onclick="tellMeaStory()">Generate</button>
<div id="demo"></div>
您之所以看到奇怪的结果,是因为JavaScript处理逗号的方式。例如大小写“sun”,“sun”:
不检查大小写是sun还是sun,它创建一个字符串“sun”
与“sun”
进行比较。对switch语句没有限制,但是对于“大多数”情况来说,它们并不是很好。如果你想重写这个来检查多个拼写,你可以用两种方法中的一种,至少我能想到。
反转您的switch语句
switch(true) {
case (planet.toUpperCase() === "SUN"):
text2 = "hero";
break;
case (planet.toUpperCase() === "MOON"):
text2 = "mother";
break;
case (planet.toUpperCase() === "MERCURY"):
text2 = "twin";
break;
case (planet.toUpperCase() === "Venus"):
text2 = "courtesan";
break;
case (planet.toUpperCase() === "MARS"):
text2 = "soldier";
break;
default:
text2 = "planet";
}
或者可以使用一个if语句链,一起跳过开关。
if(planet === "sun" || planet === "Sun" || planet === "SUn") {
// text assignment
}
if (planet.toLowerCase() === "sun") {
// text assignment
}
我对JS有问题。我正在尝试制作三个按类型排序的配料列表(用于酿造药剂),所有这些都是标签中的复选框。 你应该选择(选中)三个列表中的每一个元素,以便酿造药水。如果你选择了正确的成分,然后按下“酿造药水”按钮,你就有了一种确定的药水,如果你选择三种不匹配的成分,它会显示 在页面底部写着“看来这次没用了!”按下“酿造药水”按钮后。 在JavaScript中,我对三个列表都使用了一个数组,对每个列表中的
我有一些话题要讨论。我有一个24s/s的代码片段。是我自己的类,它表示类似于的功能。 这是一段代码: 我从可读性的角度考虑。是否最好将其更改为24个类并使用多态性?我不相信它会使我的代码可维护。。。一方面,那些if很清楚,应该不难理解,另一方面,if太多了。 我的问题相当笼统,但是我用Python编写代码,所以我不能使用像switch这样的构造。 你觉得呢? 更新: 一件重要的事情是、和是构造函数
下面的代码确实可以按照我需要的方式工作,但是它很难看、太多或者其他一些事情。我看过一些公式,并试图写出一些解决方案,但最终得到的是类似数量的语句。 在这种情况下,有没有一种数学公式对我有利,或者16个if语句是可以接受的? 解释一下代码,这是一种同时回合制游戏。两个玩家各有四个动作按钮,结果来自一个数组(0-3),但如果这有帮助,变量'one'和'two'可以赋值任何值。结果是,0=两个都不赢,1
问题内容: 我在存储过程中有以下代码。 NOT LIKE语句不起作用,是的,在有人说任何东西之前,COMMENT列中的项目不包含CORE,其他所有列都可以。 有谁知道这是怎么回事? 问题答案: 如果包含,则条件将不匹配。 该查询: 什么也不会返回。 在一列,两者并反对任何搜索字符串将返回。 您能否在一行中发布相关的值,您认为应该将其返回但不是?
我有4个名为的表。我有 我正在组合起来,以便 中存在数据,则或中的数据 我怎样才能获得以上的功能?
没什么好说的, 报警消息是而不是包含对象详细信息或类似信息的消息。 问题出在哪里?