无法解析提示的值

时间:2019-06-16 17:47:54

标签: javascript

我试图保留从提示中获得的值以获取结果,但是我尝试了几种组合,但我总是得到Nan 你已经抓到了

<html>
  <head>
    <title>Mis Pokemons</title>
  </head>
  <body>
    <script>
var kanto = 151
var johto = 100
var hoenn = 135
var sinnoh = 107
var totalPokemons = kanto + johto + hoenn + sinnoh
var teFaltanDeKanto = kanto - cuantosKanto
var teFaltandeJohto = johto - cuantosJohto

var cuantosKanto = prompt('¿Cuantos pokemon has capturado de la región de Kanto?');
        cuantosKanto = parseInt(cuantosKanto);


var cuantosJohto = parseInt(prompt('¿Cuantos pokemon has capturado de la región de Johto?'));

var cuantosHoenn = prompt('¿Cuantos pokemon has capturado de la región de Hoenn?');

var cuantosSinnoh = prompt('¿Cuantos pokemon has capturado de la región de Sinnoh?');

document.write('Has capturado ' + cuantosKanto + ' pokemons de Kanto y te faltan ' + teFaltanDeKanto + 'Has capturado ' + cuantosJohto + ' de johto y te faltan ' + teFaltandeJohto);
      </script>
  </body>
</html> 

2 个答案:

答案 0 :(得分:0)

在定义变量之前不要使用变量。

这是您代码中的主要问题之一,如果未定义cuantosKanto并且还没有值,则从kanto中减去cuantosKanto的值。

这里是问题:

var teFaltanDeKanto = kanto - cuantosKanto
var teFaltandeJohto = johto - cuantosJohto

所以,我建议您像这样进行内联计算:

`Región Kanto: ${cuantosKanto} capturados. ${Pokemons.kanto-cuantosKanto} restantes.`

您可能已经看到,我正在使用对象Pokemons。这将帮助您保持代码的可读性,以便更好地理解它:

const Pokemons = {
  "kanto":151,
  "johto":100,
  "hoenn":135,
  "sinnoh":107,
  "total":function(){
    return this.kanto+this.johto+this.hoenn+this.sinnoh
   }
};

通过这种方式,您可以执行Pokemons.sinnoh来访问任何地区的全部神奇宝贝。甚至可以通过Pokemons.total()来获得全部的神奇宝贝。

注意

  

在这种情况下,建议将字符串解析为数字的方法是使用unary plus operator

这意味着不要这样做:

var cuantosKanto = parseInt(prompt("Number"));

您可以这样做:

var cuantosKanto = +prompt("Number");

所有内容都经过详细介绍,下面是所有内容的示例:

代码:

const Pokemons = {
  "kanto":151,
  "johto":100,
  "hoenn":135,
  "sinnoh":107,
  "total":function(){
    return this.kanto+this.johto+this.hoenn+this.sinnoh
   }
};

var cuantosKanto = +prompt('¿Cuantos pokemon has capturado de la región de Kanto?');

var cuantosJohto = +prompt('¿Cuantos pokemon has capturado de la región de Johto?');

var cuantosHoenn = +prompt('¿Cuantos pokemon has capturado de la región de Hoenn?');

var cuantosSinnoh = +prompt('¿Cuantos pokemon has capturado de la región de Sinnoh?');

var capturados = cuantosKanto+cuantosJohto+cuantosHoenn+cuantosSinnoh;

document.write(`
  Has capturado ${capturados} pokémon de ${Pokemons.total()}.<br><br>
  
  Región Kanto: ${cuantosKanto} capturados.<br>
  ${Pokemons.kanto-cuantosKanto} restantes.<br><br>
  
  Region Johto: ${cuantosJohto} capturados.<br>
  ${Pokemons.johto-cuantosJohto} restantes.<br><br>
  
  Region Hoenn: ${cuantosHoenn} capturados.<br>
  ${Pokemons.hoenn-cuantosHoenn} restantes.<br><br>
  
  Region Sinnoh: ${cuantosSinnoh} capturados.<br>
  ${Pokemons.sinnoh-cuantosSinnoh} restantes.<br><br> 
`);

答案 1 :(得分:-1)

这两个语句不执行您要执行的操作:

var teFaltanDeKanto = kanto - cuantosKanto
var teFaltandeJohto = johto - cuantosJohto

您正在尝试将两个数字加在一起,但是此时cuantosKantocuantosJohto尚未分配值。

因此将这两个语句移到document.write()语句的上方。