2017-02-15 33 views
0

Ich versuche, ein Online-Rollenspiel zu machen, aber mein Code funktioniert nicht. Es fragt den Benutzer, was er will, dass sein Charakter benannt wird und welches Rennen er sein will. Es würde dann zufällig einige Statistiken für sie wählen und - abhängig von ihrer Rasse - addieren und von ihren Werten subtrahieren.Warum funktioniert mein JavaScriptcode nicht mit Prompt und innerHTML?

var nameAndRaceFunction = function(){  
     var namePrompt = prompt("What shall you name your character?"); 
     var racePrompt = prompt("What race shall your character be? Please spell it correctly, with no capitals.");    
     var race = racePrompt.toLowerCase(); 
     var totalSentence = namePrompt + " the " + race; 
     document.getElementById("nameAndRace").innerHTML = totalSentence; 
    } 

    var str = Math.floor((Math.random() * 10) + 1); 
    var int = Math.floor((Math.random() * 10) + 1); 
    var hlth = Math.floor((Math.random() * 10) + 1); 
    var dext = Math.floor((Math.random() * 10) + 1); 

    var getStatFunction = function(){ 
     if(racePrompt === "elf"){ 
      elfStats(); 
     }else if(racePrompt === "dwarf"){ 
      dwarfStats(); 
     }else if(racePrompt === "man"){ 
      manStats(); 
     }else{ 

     } 
    } 

     var elfStats = function(){ 
      var elfStr = str; 
      var elfInt = int + 1; 
      var elfHlth = (hlth - 1)*10; 
      var elfDext = dext + 1; 
      document.getElementById("strength").innerHTML = elfStr; 
      document.getElementById("intelligence").innerHTML = elfInt; 
      document.getElementById("health").innerHTML = elfHlth; 
      document.getElementById("dexterity").innerHTML = elfDext; 
     } 

     var manStats = function(){ 
      var manStr = str + 2; 
      var manInt = int; 
      var manHlth = (hlth - 1) * 10; 
      var manDext = dext; 
      document.getElementById("strength").innerHTML = manStr; 
      document.getElementById("intelligence").innerHTML = manInt; 
      document.getElementById("health").innerHTML = manHlth; 
      document.getElementById("dexterity").innerHTML = manDext; 
     } 

     var dwarfStats = function(){ 
      var dwarfStr = str + 1; 
      var dwarfInt = int; 
      var dwarfHlth = (hlth + 1) * 10; 
      var dwarfDext = dext - 1; 
      document.getElementById("strength").innerHTML = dwarfStr; 
      document.getElementById("intelligence").innerHTML = dwarfInt; 
      document.getElementById("health").innerHTML = dwarfHlth; 
      document.getElementById("dexterity").innerHTML = dwarfDext; 
     } 
+0

was sind Ihre spezifischen Probleme? erhalten Sie irgendwelche Fehler? – Inkdot

+0

Ich habe den Code ein bisschen umgeschrieben: https://jsfiddle.net/dfsgffb/ –

+0

Das Problem war nur eine Variable, die nicht global deklariert wurde. Danke für die Eingabe, und danke @ChrisG, dieser Code funktioniert und sieht viel besser aus! –

Antwort

0

racePrompt ist innerhalb der nameAndRaceFunction() Funktionsumfang definiert. Es ist außerhalb davon nicht zugänglich. Weiter: Sie Kleinbuchstaben es, so später werde ich nur für race nicht racePrompt überprüfen.

Eine Lösung wäre race global zu machen wie str, int, hlth, dext

var nameAndRaceFunction = function() { 
    namePrompt = prompt("What shall you name your character?"); 
    var racePrompt = prompt("What race shall your character be? Please spell it correctly, with no capitals."); 
    race = racePrompt.toLowerCase(); 
    var totalSentence = namePrompt + " the " + race; 
    document.getElementById("nameAndRace").innerHTML = totalSentence; 
    getStatFunction() 
    } 

    var namePrompt, race; 
    var str = Math.floor((Math.random() * 10) + 1); 
    var int = Math.floor((Math.random() * 10) + 1); 
    var hlth = Math.floor((Math.random() * 10) + 1); 
    var dext = Math.floor((Math.random() * 10) + 1); 

    var getStatFunction = function() { 
    if (race === "elf") { 
     elfStats(); 
    } else if (race === "dwarf") { 
     dwarfStats(); 
    } else if (race === "man") { 
     manStats(); 
    } else { 

    } 
    } 
+0

Ich bin ein Anfänger js Benutzer. Deklariert eine globale Variable in Java ähnlich wie in JavaScript? –

+0

@Justin alles, was nicht innerhalb einer Funktion ist, ist global. Ja, es ist ähnlich wie Java – arcs

+1

DANKE SO VIEL !!!!! –

0

getStatFunction sollte mit dem Rennen als Argument aufgerufen werden, oder sollten Sie die Variable racePrompt outsite die Funktion

auch definieren, wenn Sie einen Spieler machen bedeuten, sollte eine gute Idee, es als Objekt haben werden und verwenden Sie die nameAndRaceFunction wie einen Konstruktor