JavaScript parametr funkcji

JavaScript parametr funkcji
DR
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 5 lat
  • Postów:31
0

Zazwyczaj programuje w C++. Chciałem spróbować swoich sił w programowaniu webowym kupiłem książkę pierwszy przykład jakiś quiz
i tam w pliku game.js był kod:

Kopiuj
 if(jQuery){ 
  var checkAnswers = function(){ 
    var answerString = ""; 
    var answers = $(":checked"); 
    answers.each(function(i) { // tego nie rozumiem jak do tej funkcji dostał się ten argument
      answerString = answerString + answers[i].value; 
    }); 
  //  $(":checked").each(function(i) { 
  //    var answerString = answerString + answers[i].value; 
  //  }); 
    checkIfCorrect(answerString); 
  }; 
  var checkIfCorrect = function(theString){ 
    if(parseInt(theString, 16) === 811124566973){ 
      $("body").addClass("correct"); 
      $("h1").text("Wygrałeś!"); 
      $("canvas").show(); 
    } 
  }; 
  $("#question1").show(); 
}; 
if(impress){ 
  $("#question2").show(); 
}; 
if(atom){ 
  $("#question3").show(); 
}; 
if(createjs){ 
  $("#question4").show(); 
}; 
if(me){ 
  $("#question5").show(); 
}; 
if(require){ 
  $("#question6").show(); 
}; 
if($().playground){ 
  $("#question7").show(); 
}; 
if(jaws){ 
  $("#question8").show(); 
}; 
if(enchant){ 
  $("#question9").show(); 
}; 
if(Crafty){ 
  $("#question10").show(); 
};

w miejscu zaznaczonym moim komentarzem zastanawiam się czy to "i" to argument formalny czy aktualny jakim sposobem on reprezentuje cokolwiek i dlaczego quiz działa nawet jeśli wpisze odpowiedzi w różnej kolejności cały kod jest pod adresem
dalsze pliki to biblioteka jQuery,
main.css :

Kopiuj
 
body{
  margin-left:50px;
}
#question1, #question2, #question3, #question4, #question5, 
#question6, #question7, #question8, #question9, #question10{
  display:none;
}
canvas{
  display:none;
}
.correct{
  background-color:#24399f;
  color:white;
}

i index.html:

Kopiuj
 
<!DOCTYPE html> 
<html> 
  <head> 
    <meta charset="utf-8"> 
    <title>Quiz</title> 
    <link rel="stylesheet" type="text/css" href="main.css">  
  </head> 
  <body onclick="checkAnswers();"> 
    <h1>Quiz</h1> 
    <div id="quiz"> 
      <div id="question1"> 
        <div class="question">Który z tych typów plików nie jest używany do tworzenia stron internetowych?</div> 
        <input type="radio" name="question1" value="a"/> 
        <label>.html</label> 
        <input type="radio" name="question1" value="b"/> 
        <label>.exe</label> 
        <input type="radio" name="question1" value="c"/> 
        <label>.js</label> 
        <input type="radio" name="question1" value="d"/> 
        <label>.css</label> 
      </div> 
      <br /> 
      <div id="question2"> 
        <div class="question">Która para znaków jest używana do oznaczania obiektów JavaScript?</div> 
        <input type="radio" name="question2" value="a"/> 
        <label>[]</label> 
        <input type="radio" name="question2" value="b"/> 
        <label>;;</label> 
        <input type="radio" name="question2" value="c"/> 
        <label>{}</label> 
        <input type="radio" name="question2" value="d"/> 
        <label>()</label> 
      </div> 
      <br /> 
      <div id="question3"> 
        <div class="question">Krety są…</div> 
        <input type="radio" name="question3" value="a"/> 
        <label>wszystkożerne</label> 
        <input type="radio" name="question3" value="b"/> 
        <label>urocze</label> 
        <input type="radio" name="question3" value="c"/> 
        <label>obrzydliwe</label> 
        <input type="radio" name="question3" value="d"/> 
        <label>wszystkie powyższe</label> 
      </div> 
      <br /> 
      <div id="question4"> 
        <div class="question">Japoński znak "か" wymawia się…</div> 
        <input type="radio" name="question4" value="a"/> 
        <label>ka</label> 
        <input type="radio" name="question4" value="b"/> 
        <label>ko</label> 
        <input type="radio" name="question4" value="c"/> 
        <label>ke</label> 
        <input type="radio" name="question4" value="d"/> 
        <label>ki</label> 
      </div> 
      <br /> 
      <div id="question5"> 
        <div class="question">Stała grawitacji na Ziemi w przybliżeniu wynosi...</div> 
        <input type="radio" name="question5" value="a"/> 
        <label>10 m/s^2</label> 
        <input type="radio" name="question5" value="b"/> 
        <label>0,809 m/s^2</label> 
        <input type="radio" name="question5" value="c"/> 
        <label>9,81 m/s^2</label> 
        <input type="radio" name="question5" value="d"/> 
        <label>84,4 m/s^2</label> 
      </div> 
      <br /> 
      <div id="question6"> 
        <div class="question">Jak wygląda dziesiętna liczba 45 w systemie dwójkowym?</div> 
        <input type="radio" name="question6" value="a"/> 
        <label>101101</label> 
        <input type="radio" name="question6" value="b"/> 
        <label>110011</label> 
        <input type="radio" name="question6" value="c"/> 
        <label>011101</label> 
        <input type="radio" name="question6" value="d"/> 
        <label>101011</label> 
      </div> 
      <br /> 
      <div id="question7"> 
        <div class="question">4 << 2 = ...</div> 
        <input type="radio" name="question7" value="a"/> 
        <label>16</label> 
        <input type="radio" name="question7" value="b"/> 
        <label>4</label> 
        <input type="radio" name="question7" value="c"/> 
        <label>2</label> 
        <input type="radio" name="question7" value="d"/> 
        <label>8</label> 
      </div> 
      <br /> 
      <div id="question8"> 
        <div class="question">Jak obliczyć długość przeciwprostokątnej trójkąta prostokątnego, mając podane długości jego przyprostokątnych? </div> 
        <input type="radio" name="question8" value="a"/> 
        <label>pi*promień^2</label> 
        <input type="radio" name="question8" value="b"/> 
        <label>korzystając z twierdzenia Pitagorasa</label> 
        <input type="radio" name="question8" value="c"/> 
        <label>używając kalkulatora</label> 
        <input type="radio" name="question8" value="d"/> 
        <label>sin(bok1 + bok2)</label> 
      </div> 
      <br /> 
      <div id="question9"> 
        <div class="question">Prawda czy fałsz: aby gra była coś warta, musi zmieniać klatki z prędkością przynajmniej 60 na sekundę.</div> 
        <input type="radio" name="question9" value="a"/> 
        <label>prawda</label> 
        <input type="radio" name="question9" value="b"/> 
        <label>fałsz</label> 
      </div> 
      <br /> 
      <div id="question10"> 
        <div class="question">Dzięki serwerowi można...</div> 
        <input type="radio" name="question10" value="a"/> 
        <label>ukryć swój kod</label> 
        <input type="radio" name="question10" value="b"/> 
        <label>utworzyć świetną grę</label> 
        <input type="radio" name="question10" value="c"/> 
        <label>umożliwić graczom wspólną grę</label> 
        <input type="radio" name="question10" value="d"/> 
        <label>wszystkie powyższe</label> 
      </div> 
    </div> 
    <script src="jquery.js"></script> 
    <script src="impress.js"></script> 
    <!-- atom needs this to run --> 
    <canvas></canvas> 
    <script src="atom.js"></script> 
    <script src="easel.js"></script> 
    <script src="melon.js"></script> 
    <script src="yabble.js"></script> 
    <script src="jquery.gamequery.js"></script> 
    <script src="jaws.js"></script> 
    <script src="enchant.js"></script> 
    <script src="crafty.js"></script> 
    <script src="game.js"></script> 
  </body> 
</html> 


dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
2

hasło na dziś: funkcja anonimowa.

each jest funkcją jQuery, która wykonuje w pętli funkcję, którą przekazujesz jako parametr (a więc sama definiuje ilość argumentów).

uproszczony kod:

Kopiuj
function wykonaj_cos(parametr) {
  parametr(1,2);
}

wykonaj_cos(function(A, B) {
  console.log(A, B);
  // A = 1
  // B = 2;
});

DR
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 5 lat
  • Postów:31
0

Dzięki nie wiem czy mogę powiedzieć z jakiej książki to wziąłem nie wiem czy wtedy nie złamie prawa ale skoro w tej książce napisali że nic nie trzeba wiedzieć żeby ją czytać
to chyba powinni wyjaśniać takie rzeczy ale mam jeszcze jedno pytanie dlaczego quiz działa poprawnie nawet jeśli kliknę odpowiedzi nie po kolei

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
0

Dzięki nie wiem czy mogę powiedzieć z jakiej książki to wziąłem nie wiem czy wtedy nie złamie prawa

lol

dlaczego quiz działa poprawnie nawet jeśli kliknę odpowiedzi nie po kolei

bo funkcja checkAnswers wykonuje się za każdym razem jak klikniesz COKOLWIEK na stronie - ktoś to strasznie niemądrze zrobił


DR
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 5 lat
  • Postów:31
0

dzięki teraz wszystko jasne

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.