功能未运行时出现问题

时间:2016-11-11 13:34:31

标签: javascript function

过去两周我一直在研究这种摇滚,纸张,剪刀游戏。而现在已经陷入了如何获得选择胜利者的功能。我使用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 个答案:

答案 0 :(得分:0)

这里有效:https://jsfiddle.net/112jbcao/2/

你从未打过电话

self.velgVinner();

这是第63行

答案 1 :(得分:-2)

只需将功能包装在IIFE中:If将为self.velgVinner = function(){