2017-02-13 14 views
-1

ここに、テキストを変数に設定するJS関数があります。そして、プレイヤーが持っているポケモンをどのように割り当てるか。なぜこのコードはテキストを未定義に設定していますか?

function setStats() { 
// Sets up stats based on Pokemon 
if (computerPokemon === 'Pikachu') { 
    var computerAttack = 30; 
    var computerUlt = 60; // Does damage 
    var computerHealth = 50; 
    var computerSpeed = 20; 
    var computerAgility = 10; 
} 

if (playerPokemon === 'Ho-Oh') { 
    var playerAttack = 70; 
    var playerUlt = 10; // Buffs HP 
    var playerHealth = 80; 
    var playerSpeed = 35; 
    var playerAgility = 12; 
} 

document.getElementById("pHP").innerHTML = 'Health: ' + playerHealth; 
document.getElementById("pSpeed").innerHTML = 'Speed: ' + playerSpeed; 
document.getElementById("pAgility").innerHTML = 'Agility: ' + playerAgility; 
} 

function startGame() { 
// Player Pokemon Selector 
var playerPokemonArray = ["Ho-Oh","Venusaur","Weedle"]; 
var playerPokemonArrayRandom = Math.floor((Math.random() * playerPokemonArray.length)); 
var playerPokemon = playerPokemonArray[playerPokemonArrayRandom]; 
document.getElementById("playerPokemon").innerHTML = 'Your Pokemon is: '  + playerPokemon; 

// Computer Pokemon Selector 
var computerPokemonArray = ["Pikachu","Charmander","Diglett"]; 
var computerPokemonArrayRandom = Math.floor((Math.random() * computerPokemonArray.length)); 
var computerPokemon = computerPokemonArray[computerPokemonArrayRandom]; 
document.getElementById("computerPokemon").innerHTML = 'The Computer\'s Pokemon is: ' + computerPokemon; 

このコードを実行すると、私の統計段落のテキストが未定義に設定されます。変数は、与えられたポケモンに応じて設定されます。

私の周りのコードを変更しようとしましたが、何も機能しませんでした。

+1

はもっと[MCVE]必要があります。私の問題@Melpomene – melpomene

+0

は申し訳ありません。私はこのコードを伐採することは難しくどこの人が見てために作るだろうと信じているコードであります問題が発生する可能性があります –

+0

あなたのコードはコンパイルされません(一致しない '{')。 – melpomene

答えて

0

あなたのコードはsetStats()関数内から統計変数を設定しており、startGame()からアクセスしようとしています。 Javascriptはレキシカルスコープ言語です。変数をwithinkから設定するので、その関数だけが変数にアクセスできます。これを解決するには、変数をグローバルスコープに移動します。

(また、あなたが関数を呼び出すことはありませんsetStats()

+0

具体的にどのような変数について話していますか? 'setStats()'は 'startGame()'(if条件で)から変数にアクセスしようとしています。 'setStats()'で定義された変数は、その外側では使用されません。 – nnnnnn

+0

これは、ローカルスコープとは異なるグローバルスコープコード「行為」のスコープに依存し、定義されていないということは、コードの一部が間違ったスコープにあることを意味します – Grisza