Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wyciągnąć hasło z funkcji?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
soliniak
Cześć,

Mam coś takiego

  1. function losowanie()
  2. {
  3. var wylosowana_liczba = Math.round(Math.random() * 3);
  4. wylosowane_haslo = motto[wylosowana_liczba];
  5.  
  6. alert(wylosowane_haslo);
  7. }
  8.  
  9. var haslo = wylosowane_haslo;
  10.  
  11. +
  12.  
  13. <div id="losowanie" onclick="losowanie();">LOSUJ</div>


Jak zrobić żeby wartość hasła była równa "wylosowane_haslo"?
W tej chwili otrzymuję błąd "wylosowane_haslo is not defined"...

Wiem że to podstawy ale dopiero próbuję to ogarniać, a nigdzie nie mogę znaleźć odpowiedzi na pytanie.
Dziękuje i pozdrawiam
nospor
Wypadaloby wpier wypelnic tablice motto danymi....
soliniak
Wszystko jest wink.gif

var motto = new Array(3);

motto[0] = "Motto Ala ma kota";
motto[1] = "Motto Gość w domu dziecko w drodze";
motto[2] = "Motto Być albo nie być oto jest pytanie";
nospor
Kod
function losowanie()
{
var wylosowana_liczba = Math.round(Math.random() * 3);
alert(wylosowana_liczba);
wylosowane_haslo = motto[wylosowana_liczba];

alert(wylosowane_haslo);
}

To pokaz jeszcze raz dokladnie co zwraca zmodyfikowany przeze mnie kod
soliniak
Ułatwię.

  1.  
  2. var motto = new Array(3);
  3.  
  4. motto[0] = "Motto Ala ma kota";
  5. motto[1] = "Motto Gość w domu dziecko w drodze";
  6. motto[2] = "Motto Być albo nie być oto jest pytanie";
  7.  
  8. function losowanie()
  9. {
  10. var wylosowana_liczba = Math.round(Math.random() * 3);
  11. wylosowane_haslo = motto[wylosowana_liczba];
  12.  
  13. alert(wylosowane_haslo);
  14. }
  15.  
  16. var haslo = wylosowane_haslo;
  17.  
  18. +
  19.  
  20. <div id="losowanie" onclick="losowanie();">LOSUJ</div>
nospor
Nie ulatwiles. Nadal nie wiem co wyswietlaja alerty o ktore prosilem. Czy ja szpreching chinese?
soliniak
Alerty wyświetlają odpowiednio
nr. wylosowany przez funkcję random oraz
motto przypisane do indexu z tablicy które jest wybierane według funkcji random

W funkcji wszystko działa, nie wiem natomiast jak wydobyć haslo/motto poza funkcję i tam podmienić zmienną na motto wylosowane w funkcji.
nospor
Kod
var motto = new Array(3);

motto[0] = "Motto Ala ma kota";
motto[1] = "Motto Gość w domu dziecko w drodze";
motto[2] = "Motto Być albo nie być oto jest pytanie";

function losowanie()
{
var wylosowana_liczba = Math.round(Math.random() * 3);
return motto[wylosowana_liczba];

}

var haslo = losowanie();
rafkon1990
Cytat(nospor @ 28.10.2016, 12:07:55 ) *
Kod
var motto = new Array(3);

motto[0] = "Motto Ala ma kota";
motto[1] = "Motto Gość w domu dziecko w drodze";
motto[2] = "Motto Być albo nie być oto jest pytanie";

function losowanie()
{
var wylosowana_liczba = Math.round(Math.random() * 3);
return motto[wylosowana_liczba];

}

var haslo = losowanie();


Wydaję mi się, że tablice są indeksowane od 0, a w twoim losowaniu może paść liczba 3 (out of index), Zastąp Math.round na Math.floor :-)
soliniak
Ale jak podpiąć do tego div'a z onclick?questionmark.gif sad.gif

Chodzi o to żeby po kliknięciu w diva losowało się motto.
nospor
rety....

<div id="losowanie" onclick="haslo = losowanie();">LOSUJ</div>
soliniak
Dziwna sprawa....

Wytłumaczę od początku.
Robiłem z tutorialem grę w wisielca.
Całość poszła dość sprawnie.
Miałem hasło do odgadnięcia wpisane na sztywno.
Hasło było zakreskowane.
Po kliknięciu odpowiedniej litery alfabetu jeśli literka znajdowała się w haśle to się odkrywała.
Pięknie.
Teraz chcąc ulepszyć projekt chcę dodać wybór kategorii + automatyczne losowanie hasła z danej kategorii.
Myślałem że wystarczy podmienić

var haslo = "Ala ma kota";

na

var haslo = wylosowane_haslo_z_funkcji;

Tylko że nie chce mi to działać :/
Po kliknięciu w div'a LOSUJ, hasło się niby losuje, ale nie wyświetla się na ekranie, jak chcę żeby się wyświetliło na ekranie to nie jest zakreskowane i dodatkowo po kliknięciu w prawidłowe literki jest błędna reakcja (tj. kliknięcie w złą literkę)
Załączam cały kod. Może ktoś pomoże.

index.htm
  1. <!DOCTYPE HTML>
  2. <html lang="pl">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>Szubienica</title>
  6. <script type="text/javascript" src="wisielec.js"></script>
  7. <link rel="stylesheet" type="text/css" href="style.css" />
  8. <link href="https://fonts.googleapis.com/css?family=Cousine" rel="stylesheet">
  9. </head>
  10. <body>
  11. <div id="pojemnik">
  12. <div id="plansza"></div>
  13. <div id="szubienica">
  14. <img src="img/s0.jpg" alt="" />
  15. </div>
  16. <div id="alfabet"></div>
  17. <div style="clear: both"></div>
  18. </div>
  19. <div id="losowanie" onclick="haslo = losowanie();">LOSUJ</div>
  20.  
  21.  
  22. </body>
  23. </html>



wisielec.js

  1. var kategorie = new Array(3);
  2.  
  3. kategorie[0] = "przyslowia";
  4. kategorie[1] = "cytaty";
  5. kategorie[2] = "motto";
  6.  
  7. var ilosc_kategorii = kategorie.length;
  8.  
  9.  
  10. var przyslowia = new Array(3);
  11.  
  12. przyslowia[0] = "przyslowia Ala ma kota";
  13. przyslowia[1] = "przyslowia Gość w domu dziecko w drodze";
  14. przyslowia[2] = "przyslowia Być albo nie być oto jest pytanie";
  15.  
  16. var cytaty = new Array(3);
  17.  
  18. cytaty[0] = "cytaty Ala ma kota";
  19. cytaty[1] = "cytaty Gość w domu dziecko w drodze";
  20. cytaty[2] = "cytaty Być albo nie być oto jest pytanie";
  21.  
  22. var motto = new Array(3);
  23.  
  24. motto[0] = "Motto Ala ma kota";
  25. motto[1] = "Motto Gość w domu dziecko w drodze";
  26. motto[2] = "Motto Być albo nie być oto jest pytanie";
  27.  
  28. var haslo = "";
  29.  
  30. function losowanie()
  31. {
  32. var wylosowana_liczba = Math.floor(Math.random() * 3);
  33. wylosowane_haslo = motto[wylosowana_liczba];
  34.  
  35. haslo = wylosowane_haslo;
  36. document.getElementById("plansza").innerHTML = haslo;
  37.  
  38. wypisz_haslo();
  39. return wylosowane_haslo;
  40. }
  41.  
  42.  
  43.  
  44.  
  45. haslo = haslo.toUpperCase();
  46.  
  47. var dlugosc= haslo.length;
  48.  
  49. var haslo1 = "";
  50.  
  51. var ile_skuch = "0";
  52.  
  53. var yes = new Audio('yes.wav');
  54. var no = new Audio('no.wav');
  55.  
  56.  
  57. for (i = 0; i<dlugosc; i++)
  58. {
  59. if (haslo.charAt(i) == " ") haslo1 = haslo1 +" ";
  60. else haslo1 = haslo1 + "-";
  61. }
  62.  
  63. var litery = new Array(35);
  64.  
  65. litery[0] = "A";
  66. litery[1] = "Ą";
  67. litery[2] = "B";
  68. litery[3] = "C";
  69. litery[4] = "Ć";
  70. litery[5] = "D";
  71. litery[6] = "E";
  72. litery[7] = "Ę";
  73. litery[8] = "F";
  74. litery[9] = "G";
  75. litery[10] = "H";
  76. litery[11] = "I";
  77. litery[12] = "J";
  78. litery[13] = "K";
  79. litery[14] = "L";
  80. litery[15] = "Ł";
  81. litery[16] = "M";
  82. litery[17] = "N";
  83. litery[18] = "Ń";
  84. litery[19] = "O";
  85. litery[20] = "Ó";
  86. litery[21] = "P";
  87. litery[22] = "Q";
  88. litery[23] = "R";
  89. litery[24] = "S";
  90. litery[25] = "Ś";
  91. litery[26] = "T";
  92. litery[27] = "U";
  93. litery[28] = "V";
  94. litery[29] = "W";
  95. litery[30] = "X";
  96. litery[31] = "Y";
  97. litery[32] = "Z";
  98. litery[33] = "Ź";
  99. litery[34] = "Ż";
  100.  
  101.  
  102. function start()
  103. {
  104.  
  105. var tresc_diva = "";
  106.  
  107. for (i = 0; i<=34; i++)
  108. {
  109. var element = "lit"+i;
  110. tresc_diva = tresc_diva + '<div class="litera" id="'+element+'" onClick="sprawdz('+i+')">'+litery[i]+'</div>';
  111. if ((i + 1) % 7 == 0) tresc_diva = tresc_diva + '<div style="clear: both"></div>';
  112.  
  113. }
  114.  
  115. document.getElementById("alfabet").innerHTML = tresc_diva;
  116.  
  117.  
  118. }
  119.  
  120.  
  121.  
  122. function wypisz_haslo()
  123. {
  124.  
  125. document.getElementById("plansza").innerHTML = haslo1;
  126.  
  127. }
  128.  
  129. String.prototype.ustawZnak = function (miejsce, znak)
  130. {
  131. if (miejsce > this.length -1) return this.toString();
  132. else return this.substr(0, miejsce) + znak + this.substr(miejsce + 1);
  133. }
  134.  
  135. function sprawdz(nr)
  136. {
  137. var trafiona = false;
  138. for (i = 0; i<dlugosc; i++)
  139. {
  140. if (haslo.charAt(i) == litery[nr])
  141. {
  142. haslo1 = haslo1.ustawZnak(i, litery[nr]);
  143. trafiona = true;
  144. }
  145. }
  146.  
  147. if(trafiona == true)
  148. {
  149. yes.play();
  150. var element = "lit" +nr;
  151. document.getElementById(element).style.background = "#003300";
  152. document.getElementById(element).style.color = "#00ff00";
  153. document.getElementById(element).style.border = "3px solid #00ff00";
  154. document.getElementById(element).setAttribute("onclick",";");
  155. wypisz_haslo();
  156. }
  157. else
  158. {
  159. no.play();
  160. var element = "lit" +nr;
  161. document.getElementById(element).style.background = "#330000";
  162. document.getElementById(element).style.color = "#ff0000";
  163. document.getElementById(element).style.border = "3px solid #ff0000";
  164. document.getElementById(element).setAttribute("onclick",";");
  165.  
  166. ile_skuch++;
  167. var link = "img/s"+ile_skuch+".jpg";
  168. var obrazek = "<img src='"+link+"' alt='' />";
  169.  
  170. document.getElementById("szubienica").innerHTML = obrazek;
  171.  
  172.  
  173.  
  174. }
  175.  
  176. if(haslo == haslo1)
  177. {
  178. document.getElementById('alfabet').innerHTML = 'Gratulacje, wygrałeś!<br /><br /> <span class="btn_reset" onclick="location.reload()">Jeszcze raz!</span>';
  179.  
  180. }
  181. if(ile_skuch >= 9)
  182. {
  183. document.getElementById('alfabet').innerHTML = 'Przegrana! <br />Prawidłowe hasło: <br/>'+haslo+'<br /><br /> <span class="btn_reset" onclick="location.reload()">Jeszcze raz!</span>';
  184. }
  185.  
  186. }
  187.  
  188.  
  189.  
  190.  
  191.  
  192. window.onload = start;
  193.  


Dziękuję i pozdrawiam
Comandeer
Cytat
Robiłem z tutorialem grę w wisielca.

A ja wciąż nie rozumiem popularności tych tutorialów, serio. Kod, który w nich powstaje, leży mile od dzisiejszego kodu JS.

Skoro zmienna haslo jest globalna, to nie twórz niepotrzebnie zmiennej wylosowane_haslo tylko od razu przypisuj wszystko do haslo. W ten sposób powinieneś sobie znacząco ułatwić pracę.

Inna rzecz, że skoro hasło losujesz w funkcji, to także generowanie zakreskowanej wersji powinieneś zamknąć w funkcje.
soliniak
Możesz podać jakiś przykład? Nie jestem w stanie znaleźć ani zobrazować sobie jak to powinno wyglądać. :/
Comandeer
Kod
for (i = 0; i<dlugosc; i++)
{
    if (haslo.charAt(i) == " ") haslo1 = haslo1 +" ";
    else haslo1 = haslo1 + "-";
}

Ten fragment kodu powinien się wykonywać dopiero, gdy wylosujesz haslo, nie od razu.
soliniak
Zacząłem jeszcze raz i potrzebuję żeby mi ktoś to wytłumaczył...
Czemu nie wywołuje mi się ta funkcja po kliknięciu buttona?questionmark.gif

Po odświeżeniu strony motto elegancko się losuje, ale już po kliknięciu buttona nie dzieje się nic, a żadne błędy nie są zwracane...

Kod
<button onclick="losujmi()">LOSUJ</button>


Kod
var motto = new Array(3);

motto[0] = "Motto Ala ma kota";
motto[1] = "Motto Gość w domu dziecko w drodze";
motto[2] = "Motto Być albo nie być oto jest pytanie";


function losujmi()
{
    var losuj = Math.floor((Math.random() * 3));
    return haslo = motto[losuj].toUpperCase();
}

var haslo = losujmi();
Comandeer
Bo po kliknięciu w przycisk wylosowane hasło nie jest przypisywane do zmiennej haslo.
soliniak
Dokładnie :/

Co/jak zrobić żeby się przypisywało?
Comandeer
Najlepiej zrobić to w sposób cywilizowany: https://jsfiddle.net/Comandeer/s5rahn5g/
soliniak
Dzięki za pomoc wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.