我试图保留从提示中获得的值以获取结果,但是我尝试了几种组合,但我总是得到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>
答案 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
您正在尝试将两个数字加在一起,但是此时cuantosKanto
和cuantosJohto
尚未分配值。
因此将这两个语句移到document.write()
语句的上方。