2016-11-11 7 views
-1

私はこのロック、ペーパー、はさみのゲームを最後の2週間行っています。そして今、勝者が働くための機能をどのように手に入れようとしているのでしょうか。私はconsole.logを使用して、機能がself.velgVinner = function()でも実行されているかどうかを確認しましたが、これまでのところはありません。実行していない機能で問題が発生しました

私はアイデアのために空です。

Htmlの

<!DOCTYPE html> 
<html> 
<head> 
    <script src = "Assignment09.js"></script> 
    <meta charset = "utf-8"> 
</head> 

<body> 
    <h1>Assignment09</h1> 
    <p id="vinner"></p> 
</body> 
</html> 

はJavaScript

var spiller1valg; 
var spiller2valg; 

function Spiller(oppgave, id){ 
    this.oppgave = oppgave; 
    this.id = id; 

    var spillerid = "spiller" + id; 
    var feilId = "spiller" + id; 
    var valg = "spiller" + id + "valg"; 

    this.input = document.createElement("input"); 
    this.spillerfeil = document.createElement("div"); 
    this.spiller = document.createElement("div"); 
    this.text1 = document.createElement("div"); 


    //this.vinneren = document.createElement("div"); 

    //self.spillervalg = document.createElement("div"); 
    var self = this; 

    self.input.id = spillerid; 
    self.spillerfeil.id = feilId; 
    self.text1.id = valg; 

    self.lagBrett = function(){ 
     console.log("lager brett"); 

     self.spiller.style.border = "solid 1px"; 
     self.text1.innerHTML = this.oppgave;  

     self.spiller.appendChild(this.input); 
     self.spiller.appendChild(this.text1); 
     self.spiller.appendChild(this.spillerfeil); 
     document.body.appendChild(this.spiller); 

     this.input.onkeyup = this.regnUt; 
     console.log(id); 
    } 

    this.regnUt = function(){ 

     if (self.input.value == "stein" || self.input.value == "saks" || self.input.value == "papir" ||  self.input.value == "Stein" || self.input.value == "Saks" || self.input.value == "Papir"){ 

       console.log("Gyldig valg"); 
       self.spillerfeil.innerHTML = "Gyldig valg"; 
       self.text1.innerHTML = "Spiller har valgt " + self.input.value ; 

       self.text1.style.color = "green"; 
       self.spillerfeil.style.color = "black"; 

       if (self.id == 1){ 
        spiller1valg = self.input.value; 
        console.log("spiller 1 " + spiller1valg); 
       } 

       else if (self.id == 2){ 
        spiller2valg = self.input.value; 
        console.log("spiller 2 " + spiller2valg); 
       } 
      } 

      else{ 
      console.log("Ugyldig valg"); 
      self.spillerfeil.innerHTML = "Ugyldig valg"; 
      self.spillerfeil.style.color = "red"; 
     } 
    } 

    self.velgVinner = function(){ 
     console.log("velgVinner kjørte"); 

     if(spiller1valg != "" && spiller2valg != ""){ 

      if (spiller1valg == "stein" && spiller2valg == "saks" 
       || spiller1valg == "Stein" && spiller2valg == "Saks" 
       || spiller1valg == "saks" && spiller2valg == "papir" 
       || spiller1valg == "Saks" && spiller2valg == "Papir" 
       || spiller1valg == "papir" && spiller2valg == "stein" 
       || spiller1valg == "Papir" && spiller2valg == "Stein"){ 

        document.getElementById("vinner").innerHTML = "Spiller 1 vant"; 
        console.log("Spiller 1 vant"); 
        window.alert("Spiller 1 vant"); 
      } 

      /*var vinner = new Spiller("Spiller 1 vant"); 
      vinner.designVinnerText();*/ 

      if (spiller2valg == "stein" && spiller1valg == "saks" 
       || spiller2valg == "Stein" && spiller1valg == "Saks" 
       || spiller2valg == "saks" && spiller1valg == "papir" 
       || spiller2valg == "Saks" && spiller1valg == "Papir" 
       || spiller2valg == "papir" && spiller1valg == "stein" 
       || spiller2valg == "Papir" && spiller1valg == "Stein"){ 

        document.getElementById("vinner").innerHTML = "Spiller 2 vant"; 
        console.log("Spiller 2 vant"); 
        window.alert("Spiller 2 vant"); 

        /*var vinner = new Spiller("Spiller 2 vant"); 
        vinner.designVinnerText();*/ 
      } 

      else if(spiller1valg == spiller2valg){ 
        document.getElementById("vinner").innerHTML = "Uavgjort"; 
        console.log("Uavgjort");  
        window.alert("Uavgjort"); 
      } 
     } 
    } 
} 

window.onload = function(){ 

    var spiller1 = new Spiller("Skriv stein, saks eller papir: ", 1); 
    spiller1.lagBrett() 

    var spiller2 = new Spiller("Skriv stein, saks eller papir: ", 2); 
    spiller2.lagBrett(); 

    document.getElementById("vinner").style.color = "green"; 

} 
+2

でだ

self.velgVinner(); 

と呼ばれることはありません。 –

+0

問題はどこですか? –

+0

関数はSpiller関数内にあり、これらは次の関数で呼び出されます。var spiller1 = new Spiller( "Skriv stein、sakseller papir:"、1); spiller1.lagBrett()他の関数にない関数としてそれを呼び出すと、おそらく – Zuflus

答えて

-2

ただ、生命維持に機能をラップ:self.velgVinner = function(){は、ここでは、(function(){function body})();

+0

この関数をどこからでも呼び出すことができませんでしたので、これが問題です。 Immediately Invoked Function Expressionとして使用することもできますし、コンストラクタの初期化後に呼び出すこともできます。 – n1kkou

+0

それは動作しません。これは関数が依存する 'this'の間違った値で呼び出されます。 – Quentin

+0

ハハ、あなたは間違っていますが、私は彼が機能の中で「this」のスコープにバインドされているような印象を受けましたが、そうではありませんでした。 – n1kkou

0

働いていることになります。https://jsfiddle.net/112jbcao/2/

あなたはそれはあなたがどこでも関数を呼び出したことはありませんライン63

関連する問題