我是一名新的JavaScript程序员,我最近正在创建一个用户ID页面(基本上它表示你的名字长度,你的年龄,并且据说是你的标志。
现在的问题是,当我创建标志部分(功能mySigno())时,我插入了2个可能的月份(Janeiro - 1月和Fevereiro - 2月),但我为Março插入了相同的«if» - March,该功能甚至不起作用。
<center><button type="button" onclick="mySigno()">Qual é o meu signo?</button></center>
<script>
function mySigno()
{
var Signo_baseado_no_mes = prompt("Em que mês nasceste? (ex.: Julho)")
if(Signo_baseado_no_mes === "Janeiro")
{
var Signo_no_mes_de_Janeiro = prompt("Em que dia de Janeiro nasceste? (ex.: 16)")
}
if(Signo_no_mes_de_Janeiro <= 20)
{
alert("O teu signo é Capricórnio!")
}
if(Signo_no_mes_de_Janeiro >= 21)
{
alert("O teu signo é Aquário!")
}
if(Signo_baseado_no_mes === "Fevereiro")
{
var Signo_no_mes_de_Fevereiro = prompt("Em que dia de Fevereiro nasceste? (ex.: 18)")
}
if(Signo_no_mes_de_Fevereiro <= 19)
{
alert("O teu signo é Aquário!")
}
if(Signo_no_mes_de_Fevereiro >= 20)
{
alert("O teu signo é Peixes!")
}
if(Signo_baseado_no_mes === "Março")
{
var Signo_no_mes_de_Março = prompt("Em que dia de Março nasceste? (ex.: 4)")
}
if(Signo_no_mes_de_Março <= 20)
{
alert("O teu signo é Peixes!")
}
if(Signo_no_mes_de_Março >= 21)
{
alert("O teu signo é Áries!")
}
}
</script>
在笑了我的代码后,请尝试解释有什么问题,谢谢!
P.S。:对于所有葡萄牙语的东西感到抱歉,在回答时将文本更改为英语没有问题(并且对于可能的不良英语也很抱歉)。
答案 0 :(得分:2)
您问题的直接答案是您可以在JavaScript中使用尽可能多的if语句。但是,您应该意识到,在您的示例中,它正在评估if语句中的每一个。
由于每个月后面的两个语句只需要在那个月使用,你应该将它们放在if语句中:
if(Signo_baseado_no_mes === "Janeiro")
{
// only do these things if Janeiro
var Signo_no_mes_de_Janeiro = prompt("Em que dia de Janeiro nasceste? (ex.: 16)")
if(Signo_no_mes_de_Janeiro <= 20)
{
alert("O teu signo é Capricórnio!")
}
if(Signo_no_mes_de_Janeiro >= 21)
{
alert("O teu signo é Aquário!")
}
}
这并不能解决无法正常工作的问题,但至少会运行最少量的代码。还要记住,JavaScript会创建在if语句中声明的变量,即使您没有找到它们也是如此。这会自动发生。它现在不应该是你的代码中的一个问题,但是如果你有两个用'var'声明的同名变量,即使它们被if块分隔,它也会出错。
最后,因为你说===“Janeiro”和类似的,用户的输入必须完全匹配。大写必须是相同的,否则它将不匹配!
答案 1 :(得分:2)
稍微重构了你的代码 - 它现在按预期工作。第二个@ jgitter的观点也是如此。
function mySigno() {
var msg = 'Em que dia de %s nasceste? (ex.: 16)';
var month = window.prompt('Em que mês nasceste? (ex.: Julho)');
var day = window.prompt(msg.replace(/%s/, month));
day = parseInt(day, 10);
switch (month) {
case 'Janeiro':
case 'janeiro':
if (day <= 20) {
window.alert('O teu signo é Capricórnio!');
} else {
window.alert('O teu signo é Aquário!');
}
break;
case 'Fevereiro':
case 'fevereiro':
if (day <= 19) {
window.alert('O teu signo é Aquário!');
} else {
window.alert('O teu signo é Peixes!');
}
break;
case 'Março':
case 'março':
if (day <= 20) {
window.alert('O teu signo é Peixes!');
} else {
window.alert('O teu signo é Áries!');
}
break;
}
}