Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-是否可以有3个«;如果»;变量还是一个bug?_Javascript_Html_Debugging_If Statement_Var - Fatal编程技术网

Javascript-是否可以有3个«;如果»;变量还是一个bug?

Javascript-是否可以有3个«;如果»;变量还是一个bug?,javascript,html,debugging,if-statement,var,Javascript,Html,Debugging,If Statement,Var,我是一名新的JavaScript程序员,最近我正在创建一个用户ID页面(基本上,它会显示您的姓名、长度、年龄以及您的星座) 现在的问题是,当我创建符号部分(函数mySigno())时,我插入了两个可能的月份(Janeiro-一月和Fevereiro-二月),但我为Março-March插入了相同的«if»,该函数甚至不起作用 <center><button type="button" onclick="mySigno()">Qual é o meu signo?</

我是一名新的JavaScript程序员,最近我正在创建一个用户ID页面(基本上,它会显示您的姓名、长度、年龄以及您的星座)

现在的问题是,当我创建符号部分(函数mySigno())时,我插入了两个可能的月份(Janeiro-一月和Fevereiro-二月),但我为Março-March插入了相同的«if»,该函数甚至不起作用

<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>
Qualéo meu sign?
函数mySigno()
{
var Signo_baseado_no_mes=prompt(“Em que mês nasceste?(例如:Julho)”)
如果(签名为“Janeiro”)
{
var Signo_no_mes_de_Janeiro=提示(“Em que dia de Janeiro nasceste?(例:16)”)
}
如果(签名不在里约热内卢=21)
{
警觉(“我是阿奎里奥先生!”)
}
如果(签名为“Fevereiro”)
{
var Signo_no_mes_de_Fevereiro=提示符(“Em que dia de Fevereiro nasceste?(例:18)”)
}
如果(签名编号=20)
{
警报(“信号箱!”)
}
如果(签名)
{
var Signo_no_mes_de_Março=提示(“Em que dia de Março nasceste?(例:4)”)
}
如果(Signo_no_mes_de_Março=21)
{
警报(“哦,信号!”)
}
}
笑了我的代码之后,请试着解释一下是什么错了,谢谢


注:很抱歉所有的葡萄牙语内容,在回答时将任何文本更改为英语是没有问题的(也很抱歉可能是英语不好).

对您的问题的直接回答是,您可以在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!")
  }

 }
if(签名不在里约热内卢)
{
//只有在里约热内卢
var Signo_no_mes_de_Janeiro=提示(“Em que dia de Janeiro nasceste?(例:16)”)
如果(签名不在里约热内卢=21)
{
警觉(“我是阿奎里奥先生!”)
}
}
这并不能解决函数不起作用的问题,但它至少会运行最少的代码。还要记住,JavaScript会创建您在if语句中声明的变量,即使您无法访问这些变量。这会自动发生。现在代码中不应该有问题,但如果您有两个标识符,则会出错使用“var”声明的逻辑命名变量,即使它们由if块分隔


最后,因为你说的是如果==“Janeiro”与此类似,用户的输入必须完全匹配。大写字母也必须相同,否则它将不匹配!

对您的问题的直接回答是,您可以在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!")
  }

 }
if(签名不在里约热内卢)
{
//只有在里约热内卢
var Signo_no_mes_de_Janeiro=提示(“Em que dia de Janeiro nasceste?(例:16)”)
如果(签名不在里约热内卢=21)
{
警觉(“我是阿奎里奥先生!”)
}
}
这并不能解决函数不起作用的问题,但它至少会运行最少的代码。还要记住,JavaScript会创建您在if语句中声明的变量,即使您无法访问这些变量。这会自动发生。现在代码中不应该有问题,但如果您有两个标识符,则会出错使用“var”声明的逻辑命名变量,即使它们由if块分隔


最后,因为你说的是if==“Janeiro”和类似的,所以用户的输入必须完全匹配。大写字母也必须相同,否则就不匹配了!

对代码进行了一点重构-它现在可以正常工作了。也将支持@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;
  }
}
函数mySigno(){
var msg='Em que dia de%s nasceste?(例如:16)';
var month=window.prompt('Em que mês nasceste?(例如:Julho)');
var day=window.prompt(msg.replace(/%s/,month));
day=parseInt(第10天);
开关(月){
“里约热内卢”案:
“里约热内卢”案:

如果(day对代码进行了一点重构,那么它现在就可以正常工作了。也会支持@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;
  }
}
函数mySigno(){
var msg='Em que dia de%s nasceste?(例如:16)';
var month=window.prompt('Em que mês nasceste?(例如:Julho)');
var day=window.prompt(msg.replace(/%s/,month));
day=parseInt(第10天);
开关(月){
“里约热内卢”案:
“里约热内卢”案:

如果(有一天,有一个专门针对葡萄牙用户的StackOverflow:似乎工作正常。是否有可能您在一个无法处理变量名的浏览器中进行测试,如
Signo_no_mes_de__Março
?尝试将变量名更改为
Signo_no_mes_de_Marco
;如果可以,这可能是一个浏览器问题。也就是说,看看@Evgeny。)Chernyavskiy的回答。有一个专门针对葡萄牙用户的StackOverflow:似乎工作正常。是否有可能您正在一个无法处理变量名(如
Signo_no_mes_de_ço
)的浏览器中进行测试?尝试将变量名更改为
Signo_no_mes_de___Marco
;如果这样做,可能是浏览器问题。也就是说,看看@Evgeny Chernyavskiy的答案。你可能可以用力降低
月份的
,然后你就不需要两个案例了,完全应该这样做。谢谢你指出你可能可以用力降低
月份的
,然后你就不需要两个案例了,完全应该这样做。谢谢你指出这一点