Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] JavaScript - QUIZ najczęściej wybierana odpowiedź i przekierowanie
-czarekwenta-
post 7.01.2015, 19:49:52
Post #1





Goście







Napisałem skrypcik który na podstawie najczęściej wybieranych odpowiedzi po zadaniu 3 pytań przekierowuje do odpowiedniej strony. smile.gif


Wszystko działa prawie tak jak chciałem, jednak jestem dopiero początkujący i pojawiło się kilka drobnych problemów z którymi nie mogę sobie poradzić.


ONLINE:Link


Problem polega na tym że w przypadku gdy są zaznaczone 3 różne odpowiedzi nie wiadomo do której strony ma prowadzić (takich kombinacji jest 9).

Moim rozwiązaniem tego problemu jest dopisanie linijek, które w przypadku zaznaczenia 2 różnych odpowiedzi w 2 pierwszych pytaniach wyłączają input ( nadają mu disabled="disabled") w 3 pytaniu który byłby 3 różną odpowiedzią i dają możliwość wyboru tylko 2 pozostałych które spełniają funkcję programu.

Fajnie by było, gdyby jeszcze te pytania wyświetlały się kolejno po sobie, a nie wszystkie naraz i by w każdym z nich skrypt wymagał zaznaczenia pola i dopiero potem pozwolił przejść dalej. Przerasta to moje umiejętności a pracę pilnie potrzebuję do szkoły. Jeżeli nie znalazłby się nikt o dobrym sercu kto były w stanie to napisać za darmo jestem w stanie zapłacić, ponieważ to bardzo PILNE ohno-smiley.gif . Wydaje mi się, że to nie jest aż takie trudne.



OTO MÓJ KOD
[JAVASCRIPT] pobierz, plaintext
  1. <div class="news"><script language="JavaScript">
  2. function process()
  3. {
  4. var informatyk = 0;
  5. var robotyk = 0;
  6. var biomedyk = 0;
  7.  
  8.  
  9. var pegaz = 0;
  10. var pquiz = "";
  11. var f = document.f;
  12. var i = 0;
  13. var error = 0;
  14. var value = 9999;
  15.  
  16. for (i = 0; i < f.one.length; i++) if (f.one[i].checked) value = f.one[i].value;
  17. if (value == "1") {informatyk++; }
  18. if (value == "2") { robotyk++; }
  19. if (value == "3") {biomedyk++; }
  20.  
  21. if (value != "1" && value != "2" && value != "3" && value != "4" && value != "5") { error = 1; }
  22.  
  23. for (i = 0; i < f.two.length; i++) if (f.two[i].checked) value = f.two[i].value;
  24. if (value == "1") {robotyk++; }
  25. if (value == "2") { biomedyk++; }
  26. if (value == "3") { informatyk++; }
  27.  
  28. if (value != "1" && value != "2" && value != "3" && value != "4" && value != "5") { error = 1; }
  29.  
  30. for (i = 0; i < f.three.length; i++) if (f.three[i].checked) value = f.three[i].value;
  31. if (value == "1") {biomedyk++; }
  32. if (value == "2") { informatyk++; }
  33. if (value == "3") { robotyk++; }
  34.  
  35. if (value != "1" && value != "2" && value != "3" ) { error = 1; }
  36.  
  37.  
  38. i = 0;
  39.  
  40. if (informatyk > i) { pquiz = "1.html"; i = informatyk; }
  41. if (robotyk > i) { pquiz = "2.html"; i = robotyk; }
  42. if (biomedyk > i) { pquiz = "3.html"; i = biomedyk; }
  43.  
  44.  
  45.  
  46.  
  47. if (error == 1)
  48. {
  49. alert("Musisz odpowiedzieć na wszystkie pytania !");
  50. }
  51. else
  52. {
  53. location.href = "" + pquiz;
  54. }
  55. }
  56. </script>
  57.  
  58. <h4>Quiz "Jaki kierunek studiów dla ciebie?"</h4>
  59.  
  60. <form name="f">
  61.  
  62. <h2>1. Pytanie</h2>
  63. <p>
  64. <input name="one" value="1" type="radio">Informatyk
  65. <input name="one" value="2" type="radio">Robotyk
  66. <input name="one" value="3" type="radio">Inżynier biomedyczny
  67.  
  68. </p>
  69.  
  70. <h2>2. Pytanie</h2>
  71. <p>
  72. <input name="two" value="1" type="radio">Robotyk
  73. <input name="two" value="2" type="radio">Inżynier biomedyczny
  74. <input name="two" value="3" type="radio">Informatyk
  75.  
  76. </p>
  77.  
  78. <h2>3. Pytanie</h2>
  79.  
  80. <p>
  81. <input name="three" value="1" type="radio">Inżynier biomedyczny
  82. <input name="three" value="2" type="radio">Informatyk
  83. <input name="three" value="3" type="radio">Robotyk
  84.  
  85.  
  86. </p>
  87.  
  88.  
  89.  
  90.  
  91. <h2><center><input value="Kim jestem ?" onclick="process();"
  92. type="button"></center></h2>
  93.  
  94.  
  95. <div style="text-align: center;">
  96. <div class="adspaceh" style="width: 468px; margin: 0pt auto;">
  97.  
  98. </div></div></form></div></body></html>
[JAVASCRIPT] pobierz, plaintext


Ten post edytował czarekwenta 7.01.2015, 19:57:59
Go to the top of the page
+Quote Post
trueblue
post 7.01.2015, 19:53:54
Post #2





Grupa: Zarejestrowani
Postów: 6 767
Pomógł: 1824
Dołączył: 11.03.2014

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


Dlaczego jest założenie, że nie można dać różnych odpowiedzi na każde z trzech pytań?


--------------------
Go to the top of the page
+Quote Post
trueblue
post 7.01.2015, 20:07:57
Post #3





Grupa: Zarejestrowani
Postów: 6 767
Pomógł: 1824
Dołączył: 11.03.2014

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


Nie jestem w stanie, bo jest to błąd logiczny - nie odpowiedziałeś zresztą dlaczego jest takie założenie.
Przy drugim pytaniu jest ten sam problem. Przy takim założeniu funkcjonowania quizu nie warto zadawać więcej niż jedno pytanie.

Gdybyś zmienił założenie, to powinieneś mieć przygotowanych dziewięć podstron (111.html, 112.html, ....... 333.html).


--------------------
Go to the top of the page
+Quote Post
-czarekwenta-
post 7.01.2015, 20:20:13
Post #4





Goście







Założenie takie jest dlatego, że ma to być quiz który zada pytania określające kierunek studiów jaki powinno się wybrać i oceniając których odpowiedzi jest więcej (związanych z którym kierunkiem) wybiera go, następnie przekierowuje do podstrony z informacjami o danym kierunku.

NP: Jeżeli zaznaczyłeś 2 lub 3 odpowiedzi przypisane do kierunku informatyk - przekierowuje do 1.html
NP: Jeżeli zaznaczyłeś 2 lub 3 odpowiedzi przypisane do kierunku robotyk - przekierowuje do 2.html

NP: Jeżeli zaznaczyłeś 2 lub 3 odpowiedzi przypisane do kierunku biomedyk - przekierowuje do 3.html

W przypadku gdy we wszystkich 3 pytaniach są wybrane 3 odpowiedzi przypisane do różnych kierunków powstaje błąd logiczny który nie pozwala wybrać kierunku właściwego dlatego by to wykluczyć po wybraniu w 2 pierwszych pytaniach różnych odpowiedzi (dot. różnych kierunków) w 3 pytaniu chce wyłączyć(disable=disable) odpowiedź przypisaną do tego 3 różnego kierunku.


I najlepiej by było gdyby te pytania pojawiały się po sobie dopiero po odpowiedzeniu na 1 pojawia się drugie pytanie. A po odpowiedzeniu na 2 pojawia się 3 które w przypadku dwóch różnych wybranych odpowiedzi w 2 pierwszych pytaniach nadaje trzeciej różnej odpowiedzi w inpucie (disabled="disabled").

Ten post edytował czarekwenta 7.01.2015, 20:24:45
Go to the top of the page
+Quote Post
trueblue
post 7.01.2015, 20:48:17
Post #5





Grupa: Zarejestrowani
Postów: 6 767
Pomógł: 1824
Dołączył: 11.03.2014

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


Kod
var cone=document.getElementsByName('one');
var ctwo=document.getElementsByName('two');
var cthree=document.getElementsByName('three');

for(var i=0;i<cone.length;i++){
cone[i].addEventListener('click',function(){
  for(var j=0;j<cthree.length;j++){
   cthree[j].disabled=true;
   if(this.value==cthree[j].value) // ten warunek jest niepoprawny, ponieważ opiera się na założeniu, że wybrana odpowiedź w pierwszym pytaniu ma taką samą wartość jak odpowiedź w trzecim pytaniu, tu musisz pokombinować
     cthree[j].disabled=false;
  }
});
}

//analogicznie dla ctwo

P.S. Na wstępie wszystkie radio w html, dotyczące trzeciego pytania mają mieć atrybut disabled.


--------------------
Go to the top of the page
+Quote Post
-czarekwenta-
post 7.01.2015, 21:03:44
Post #6





Goście







Nie wiem jak by to miało wyglądać żeby pytania wyświetlały się po sobie i troszkę jestem w kropce if(this.value==cthree[j].value) :/

Jesteś w stanie pomóc trochę bardziej? Przepraszam ale naprawdę ciężko mi to przychodzi, na moim poziomie wiedzy.
Go to the top of the page
+Quote Post
com
post 8.01.2015, 00:44:46
Post #7





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

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


chcesz to zrobić tylko w samym javascript?

stwórz dla każdego z pytań oddzielny formularz, następnie dodaj mu id i wszystkie poza 1 ukryj, jeśli użytkownik odpowie i wyśle odpowiedzi to zapisz sobie je np w localstorage i wlacz 2 formularz a 1 ukryj itd wink.gif

Ten post edytował com 8.01.2015, 00:45:34
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 Wersja Lo-Fi Aktualny czas: 24.06.2024 - 04:21