Nynke
Nynke

Reputation: 47

Uncaught TypeError: Cannot create property 'guid' on string

I have the following code (it is part of another page, but this is all it concerns):

var players = ["player1", "player2", "player3", "player4", "player5", "player6", "player7", "player8", "player9", "player10"];
var questions = ["Wat is jouw guilty pleasure?", "Wie was jouw eerste crush?", "Wat is je grootste seksuele fantasie?", "Wat is het meest gevoelige deel van je lichaam?", "Heeft iemand je ooit per ongeluk naakt gezien?", "Heb je ooit buiten seks gehad?", "Heb je ooit een seksspeeltje gebruikt?", "Heb je ooit naakt gezwommen?", "Heb je ooit wel eens een trio gehad?", "Heb je wel eens seks gehad in het openbaar vervoer?", "Doe je het liever het licht aan of uit? ", "Heb je weleens een verkeerde naam genoemd tijdens de seks?", "Wat vind jij het meest saaie standje?", "Wat is de grappigste plaats waar je ooit seks hebt gehad?", "Hoeveel andere benamingen ken je voor ‘seks hebben’?", "Ben je wel eens versierd door iemand van het zelfde geslacht?", "Welk cijfer geef je jezelf als sekspartner?", "Heb je weleens heb eten geëxperimenteerd tijdens seks?", "Wat vind het meest sexy aan jezelf?", "Stel dat je een pornoster bent, hoe zou je heten?", "Met welke BN’er zou je wel een nachtje willen doorbrengen?", "Wat is het meest grappige wat je is overkomen in bed?", "Wat is je favoriete standje?", "Wat vind jij sexy?", "Ben je ooit betrapt tijdens het masturberen?", "Ben je ooit betrapt tijdens seks?", "Wat vind jij echt een afknapper?", "Wat zou je nog wel eens willen proberen in bed?", "Romantische rustige seks of geile wilde seks?", "Hoe vaak per dag denk jij aan seks?", "Ochtendseks of avondseks?", "Wanneer heb je voor het laatst over seks gedroomd?", "Wat is het meest ondeugende wat je ooit hebt gedaan?", "Hoe ziet jouw ideale voorspel eruit?", "Welk rollenspel zou jij wel eens willen spelen?", "Hou je van ‘dirty talk’?", "Hoe was jouw eerste keer?", "Heb je een fetisj?", "Wat is je grootste turn off?", "Wat is je grootste turn on?", "Wat valt je het eerste op aan iemand die je ziet zitten?", "Met hoeveel mensen ben je naar bed geweest?", "Hoe vaak masturbeer je?", "Heb je wel eens een orgasme gefaked?", "Web jij weleens iemand betrapt?", "Wel je wel eens seks gehad terwijl er anderen in de kamer waren?", "Hoe vaak per week heb je seks?", "Heb je weleens een one night stand gehad?", "Heb je wel eens een striptease gegeven?", "Heb je weleens een lapdance gegeven?", "Heb je wel eens een striptease gekregen?", "Heb je wel eens een lapdance gekregen?"];
var playerNames = [];
var chosenName;
var question;

$(document).ready(function() {
  for (var i = 3; i < players.length; i++) {
    $("#" + players[i]).hide();
  }

  $("#nextQuestion").hide();
  $("#stop").hide();
  $("#chosenName").hide();
  $("#chosenQuestion").hide();

  $("#addPlayer").click(function() {
    for (var i = 3; i < players.length; i++) {
      $("#" + players[i]).toggle();
    }
  });

  $("#start").click(function() {
    playerNames = [];
    for (var i = 0; i < players.length; i++) {
      if ($("#" + players[i]).val() != null) {
        if ($("#" + players[i]).val() == "") {
          break;
        } else {
          name = $("#" + players[i]).val();
          playerNames.push(name);
          console.log(name + " added to array!");
          console.log(playerNames);
        }
      }
    }

    $("input").hide();
    $("#addPlayer").hide();
    $("#start").hide();
    $("#chosenName").show();
    $("#chosenQuestion").show();
    $("#nextQuestion").show();
    $("#stop").show();

    chosenName = playerNames[Math.floor(Math.random() * players.length)];
    question = questions[Math.floor(Math.random() * questions.length)];
  });

  $("#stop").click(function() {
    $("input").show();
    $("#addPlayer").show();
    $("#start").show();

    for (var i = 3; i < players.length; i++) {
      $("#" + players[i]).hide();
    }

    $("#nextQuestion").hide();
    $("#stop").hide();
  });

  function getQuestion() {
    chosenName = playerNames[Math.floor(Math.random() * playerNames.length + 1)];
    question = questions[Math.floor(Math.random() * questions.length + 1)];
    console.log(chosenName);
    console.log(question);

    $("#chosenName").html(chosenName);
    $("#chosenQuestion").html(question);
    return (chosenName + question);
  }

  $("#nextQuestion").click(getQuestion());
});
<head>
  <meta charset="utf-8">
  <title>Test</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <link rel="stylesheet" type="text/css" href="mystyle.css">
</head>

<body>
  <input type="text" id="player1" class="player" placeholder="Naam">
  <input type="text" id="player2" class="player" placeholder="Naam">
  <input type="text" id="player3" class="player" placeholder="Naam">
  <input type="text" id="player4" class="player" placeholder="Naam">
  <input type="text" id="player5" class="player" placeholder="Naam">
  <input type="text" id="player6" class="player" placeholder="Naam">
  <input type="text" id="player7" class="player" placeholder="Naam">
  <input type="text" id="player8" class="player" placeholder="Naam">
  <input type="text" id="player9" class="player" placeholder="Naam">
  <input type="text" id="player10" class="player" placeholder="Naam">
  <button id="addPlayer">Voeg extra spelers toe</button>
  <button id="start">Start spel</button>
  <p id="chosenName"></p>
  <p id="chosenQuestion"></p>
  <button id="nextQuestion">Volgende vraag</button>
  <button id="stop">Stop spel</button>
</body>

When I try to run it, I get an uncaught type error. It says: Cannot create property 'guid' on string 'undefinedWat vind het meest sexy aan jezelf?'

undefinedWat vind het meest sexy aan jezelf?

This part is the chosenQuestion with "undefined" in front of it, but I don't understand how that undefined got there and what I have to do to fix this... Can someone please help me?

Upvotes: 0

Views: 4834

Answers (2)

Nynke
Nynke

Reputation: 47

This is the correct answer to my own question haha. If anyone can use this, that's why I posted it! This is only the script!

var players = ["player1", "player2", "player3", "player4", "player5", "player6", "player7", "player8", "player9", "player10"];
        var questions = ["Wat is jouw guilty pleasure?", "Wie was jouw eerste crush?", "Wat is je grootste seksuele fantasie?", "Wat is het meest gevoelige deel van je lichaam?", "Heeft iemand je ooit per ongeluk naakt gezien?", "Heb je ooit buiten seks gehad?", "Heb je ooit een seksspeeltje gebruikt?", "Heb je ooit naakt gezwommen?", "Heb je ooit wel eens een trio gehad?", "Heb je wel eens seks gehad in het openbaar vervoer?", "Doe je het liever het licht aan of uit? ", "Heb je weleens een verkeerde naam genoemd tijdens de seks?", "Wat vind jij het meest saaie standje?", "Wat is de grappigste plaats waar je ooit seks hebt gehad?", "Hoeveel andere benamingen ken je voor ‘seks hebben’?", "Ben je wel eens versierd door iemand van het zelfde geslacht?", "Welk cijfer geef je jezelf als sekspartner?", "Heb je weleens heb eten geëxperimenteerd tijdens seks?", "Wat vind het meest sexy aan jezelf?", "Stel dat je een pornoster bent, hoe zou je heten?", "Met welke BN’er zou je wel een nachtje willen doorbrengen?", "Wat is het meest grappige wat je is overkomen in bed?", "Wat is je favoriete standje?", "Wat vind jij sexy?", "Ben je ooit betrapt tijdens het masturberen?", "Ben je ooit betrapt tijdens seks?", "Wat vind jij echt een afknapper?", "Wat zou je nog wel eens willen proberen in bed?", "Romantische rustige seks of geile wilde seks?", "Hoe vaak per dag denk jij aan seks?", "Ochtendseks of avondseks?", "Wanneer heb je voor het laatst over seks gedroomd?", "Wat is het meest ondeugende wat je ooit hebt gedaan?", "Hoe ziet jouw ideale voorspel eruit?", "Welk rollenspel zou jij wel eens willen spelen?", "Hou je van ‘dirty talk’?", "Hoe was jouw eerste keer?", "Heb je een fetisj?", "Wat is je grootste turn off?", "Wat is je grootste turn on?", "Wat valt je het eerste op aan iemand die je ziet zitten?", "Met hoeveel mensen ben je naar bed geweest?", "Hoe vaak masturbeer je?", "Heb je wel eens een orgasme gefaked?", "Web jij weleens iemand betrapt?", "Wel je wel eens seks gehad terwijl er anderen in de kamer waren?", "Hoe vaak per week heb je seks?", "Heb je weleens een one night stand gehad?", "Heb je wel eens een striptease gegeven?", "Heb je weleens een lapdance gegeven?", "Heb je wel eens een striptease gekregen?", "Heb je wel eens een lapdance gekregen?"];
var playerNames = [];
        var chosenName;
        var question;

        $(document).ready(function(){
            for (var i = 3; i < players.length; i++) {
                $("#" + players[i]).hide();
            }

            $("#nextQuestion").hide();
            $("#stop").hide();
            $("#chosenName").hide();
            $("#chosenQuestion").hide();

            $("#addPlayer").click(function(){
                for (var i = 3; i < players.length; i++) {
                    $("#" + players[i]).toggle();
                }
            }); 

            $("#start").click(function(){
                playerNames = [];
                for (var i = 0; i < players.length; i++) {
                    if ($("#" + players[i]).val() != null) {
                        if($("#" + players[i]).val() == ""){
                            break;
                        }
                        else {
                            name = $("#" + players[i]).val();
                            playerNames.push(name);
                            console.log(name + " added to array!");
                            console.log(playerNames);
                        }                       
                    }
                }

                $("input").hide();
                $("#addPlayer").hide();
                $("#start").hide();
                $("#chosenName").show();
                $("#chosenQuestion").show();
                $("#nextQuestion").show();
                $("#stop").show();

                getName();
                getQuestion();
            });

            $("#stop").click(function(){
                $("input").show();
                $("#addPlayer").show();
                $("#start").show();

                for (var i = 3; i < players.length; i++) {
                    $("#" + players[i]).hide();
                }

                $("#nextQuestion").hide();
                $("#stop").hide();
                $("#chosenName").hide();
                $("#chosenQuestion").hide();
            });

            function getQuestion() {
                question = questions[Math.floor(Math.random() * questions.length + 1)];
                console.log(question);

                $("#chosenQuestion").html(question);
                return (question);
            }

            function getName() {                
                for (var i = 0; i < playerNames.length; i++) {
                    chosenName = playerNames[Math.floor(Math.random() * playerNames.length)];
                }
                console.log(chosenName);

                $("#chosenName").html(chosenName);
                return (chosenName);
            }

            $("#nextQuestion").click(getQuestion);
            $("#nextQuestion").click(getName);

        });

Upvotes: 1

Andreas
Andreas

Reputation: 21881

You're using the return value of getQuestion() as the click handler.
And that return value is the string undefined + <a random question>.

Change

$("#nextQuestion").click(getQuestion());

to

$("#nextQuestion").click(getQuestion);

Upvotes: 1

Related Questions