Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak wyciągnąć hasło z funkcji?
soliniak
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wypadaloby wpier wypelnic tablice motto danymi....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
soliniak
post
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


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";
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
soliniak
post
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie ulatwiles. Nadal nie wiem co wyswietlaja alerty o ktore prosilem. Czy ja szpreching chinese?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
soliniak
post
Post #7





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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();


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
rafkon1990
post
Post #9





Grupa: Zarejestrowani
Postów: 37
Pomógł: 9
Dołączył: 14.09.2016
Skąd: Śląskie

Ostrzeżenie: (0%)
-----


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 :-)
Go to the top of the page
+Quote Post
soliniak
post
Post #10





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował soliniak 28.10.2016, 11:38:50
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




rety....

<div id="losowanie" onclick="haslo = losowanie();">LOSUJ</div>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
soliniak
post
Post #12





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Comandeer
post
Post #13





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
soliniak
post
Post #14





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


Możesz podać jakiś przykład? Nie jestem w stanie znaleźć ani zobrazować sobie jak to powinno wyglądać. :/

Ten post edytował soliniak 28.10.2016, 15:43:12
Go to the top of the page
+Quote Post
Comandeer
post
Post #15





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
soliniak
post
Post #16





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


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();
Go to the top of the page
+Quote Post
Comandeer
post
Post #17





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Bo po kliknięciu w przycisk wylosowane hasło nie jest przypisywane do zmiennej haslo.


--------------------
Go to the top of the page
+Quote Post
soliniak
post
Post #18





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


Dokładnie :/

Co/jak zrobić żeby się przypisywało?
Go to the top of the page
+Quote Post
Comandeer
post
Post #19





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Najlepiej zrobić to w sposób cywilizowany: https://jsfiddle.net/Comandeer/s5rahn5g/


--------------------
Go to the top of the page
+Quote Post
soliniak
post
Post #20





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

Ostrzeżenie: (0%)
-----


Dzięki za pomoc wink.gif

Ten post edytował soliniak 9.11.2016, 08:25:22
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 02:39