Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Własna funkcja nie działa
Forum PHP.pl > Forum > Przedszkole
castagir
Witam

Czy wie ktoś co zrobić aby własne funkcje z parametrami, które nie są wywoływane przez żadne eventy działały?

Te funkcje o które mi chodzi są to funkcje, które są wywoływane wewnątrz innej funkcji:
  1. var silaHasla = silaHasla(hasloAdministratora);
  2. var silaPin = silaPin(pinAdministratora);


Stworzyłem dwie funkcje z parametrami, które mają za zadanie obliczyć siłę dwóch kodów. Niestety przeglądarka i firebug nie uważa ich za funkcje.
Co zrobić?
nospor
Masz blad w linii 56
castagir
Rozumiem, że z fusów nie wywróżysz.

Wrzucam skróconą wersję całego dokumentu bez zbędnego tekstu:

java script:
  1. /* Załadowanie wszystkich funkcji i utworzenie zmiennych przechowujących informację o postępach instalacji */
  2. $(document).ready(function() {
  3. var postep;
  4. rozpocznijKrok1();
  5. sprawdzKrok1();
  6. rozpocznijKrok2();
  7. sprawdzKrok2();
  8. });
  9.  
  10. /* Funkcje niezbędne do przeprowadzenia dynamicznej instalacji ENDO */
  11.  
  12. /* Funkcje Krok 1. */
  13. function rozpocznijKrok1() {
  14. $('#pojemnikGlowny').on('click', '.rozpocznijKrok1', function() {
  15. postep = 'krok1';
  16. $.ajax ({
  17. type :"POST",
  18. url :"instalator.php",
  19. data :{
  20. postep: postep
  21. },
  22. success: function(odpowiedz) {
  23. $('#pojemnikGlowny').html(odpowiedz);
  24. }
  25. });
  26. });
  27. }
  28. function sprawdzKrok1() {
  29. $('#pojemnikGlowny').on('click', '.sprawdzKrok1', function() {
  30. // tresc...
  31.  
  32. });
  33. }
  34.  
  35. /* Funkcje Krok 2. */
  36. function rozpocznijKrok2() {
  37. $('#pojemnikGlowny').on('click', '.rozpocznijKrok2', function() {
  38. postep = 'krok2';
  39. $.ajax ({
  40. type :"POST",
  41. url :"instalator.php",
  42. data :{
  43. postep: postep
  44. },
  45. success: function(odpowiedz) {
  46. $('#pojemnikGlowny').css('height', '600px');
  47. $('#pojemnikGlowny').html(odpowiedz);
  48. }
  49. });
  50. });
  51. }
  52. function sprawdzKrok2() {
  53. $('#pojemnikGlowny').on('click', '.sprawdzKrok2', function() {
  54.  
  55. // tresc..
  56.  
  57. // w tych dwóch miejscach występuje błąd
  58. var silaHasla = silaHasla(hasloAdministratora);
  59. var silaPin = silaPin(pinAdministratora);
  60.  
  61. // tresc...
  62. });
  63. }
  64.  
  65. // Funkcje pomocnicze:
  66. function silaHasla(haslo) {
  67. // tresc
  68. return sila;
  69. }
  70.  
  71. function silaPin(pin) {
  72. // tresc...
  73. return sila;
  74. }


Rozpocznij Krok 1 i 2 wysylaja zapytanie do php, które odsyła nową treść dla strony, daltego chyba nie ma sensu zawartości tego pliku wysylac.
nospor
1) po co dajesz mi POMOGL, skoro jeszcze nic nie zrobilem?? Lizusotwo tu naprawde w niczym nie pomaga.
2) funkcje sprawdz... mają sie wykonac po zakonczeniu ajax funkcji rozpocznij.... a nie przed. Byc moze dlatego masz blad.
3) Konsola bledow FireBUG napewno nie zwraca ci nic wiecej?
castagir
1) To nie było podlizywanie się, tylko Twój sarkazm trochę mnie rozbawił. biggrin.gif Dlatego dostałeś pomógł - co było również trochę sakrastyczne.

2) Wcześniej też miałem problem z tym, że funkcje nie wczytywały się po załadowaniu nowej treści przez ajax. Wtedy też mi chyba pomogłeś, bo wystarczyło wrzucić wcześniej po obiekcie nadrzędnym, który uruchamia funkcję - ".on(event, przycisk, funckaj). Chciałbym wiedzieć czy również dałoby się zrobić coś podobnego w tym przypadku.

3) TypeError: silaHasla is not a function

var silaHasla = silaHasla(hasloAdministratora);

tylko tyle dostaję od firebuga


Wrzuciłem w to miejsce te funkcje:
  1. /* Funkcje Krok 2. */
  2. function rozpocznijKrok2() {
  3. $('#pojemnikGlowny').on('click', '.rozpocznijKrok2', function() {
  4. postep = 'krok2';
  5. $.ajax ({
  6. type :"POST",
  7. url :"instalator.php",
  8. data :{
  9. postep: postep
  10. },
  11. success: function(odpowiedz) {
  12. $('#pojemnikGlowny').css('height', '600px');
  13. $('#pojemnikGlowny').html(odpowiedz);
  14. // tutaj wstawiłem niedziałające funkcje
  15. }
  16. });
  17. });
  18. // następnie tutaj
  19. }


Obie próby nic nie dały i wciąż firebug wysyła ten sam komunikat.
markuz
Funkcja:
[JAVASCRIPT] pobierz, plaintext
  1. var test = function(a) {
  2. return a;
  3. }
  4.  
  5. var b = test(5); // 5
[JAVASCRIPT] pobierz, plaintext


Obiekt:
[JAVASCRIPT] pobierz, plaintext
  1. function test(a) {
  2. this.a = a;
  3. }
  4.  
  5. var b = new test(5); // obiekt
[JAVASCRIPT] pobierz, plaintext


Zdefiniuj odpowiednio swoje funkcje i umieść na samej górze (przed $(document).ready())
Poza tym nazywasz funkcje tak samo jak zmienne pod które je podstawiasz a to nie jest mile widziane.
nospor
ad1) POMOGL nie sluzy sarkazmom. POMOGL określa, ze temat jest zakonczony...a chyba nie chcesz zeby ludzie uznawali, ze rozwiązales problem i w ogole do tematu nie wchodzili, prawda?
castagir
EDIT: rozwiązanie markuza pomogło biggrin.gif Dzięki wszystkim za zainteresowanie się problemem i pomoc smile.gif

Jeśli byście mogli powiedzieć. Co to znaczy?
  1. Error: Syntax error, unrecognized expression: unsupported pseudo: 0
  2.  
  3.  
  4. throw new Error( "Syntax error, unrecognized expression: " + msg );


Pokazało mi się to w FireBug'u po wprowadzeniu rozwiązania markuza.
Da się jakoś wyświetlić ten "msg"?
mar1aczi
Ten msg to nie jest czasem "unsupported pseudo: 0"?
castagir
I nie wiem co ma to oznaczać. Bo chyba mam dobrze napisane funkcję:
  1. var obliczenieSilyHasla = function(haslo) {
  2. dlugosc = haslo.lenght;
  3. var duzeLitery = 0;
  4. for(var i=0; i<dlugosc; i++) {
  5. if(/[A-Z]/.test(haslo.charAt(i))) { duzeLitery++; }
  6. }
  7. var maleLitery = 0;
  8. for(var i=0; i<dlugosc; i++) {
  9. if(/[A-Z]/.test(haslo.charAt(i))) { maleLitery++; }
  10. }
  11. var cyfry = 0;
  12. for(var i=0; i<dlugosc; i++) {
  13. if(/[0-9]/.test(haslo.charAt(i))) { duzeLitery++; }
  14. }
  15.  
  16. var sila = 0;
  17. switch(dlugosc) {
  18. case (dlugosc == 5): sila += 5; break;
  19. case (dlugosc > 5 && dlugosc <= 10): sila += 10; break;
  20. case (dlugosc > 10 && dlugosc <= 15): sila += 20; break;
  21. case (dlugosc > 15 && dlugosc <= 20): sila += 25; break;
  22. default: break;
  23. }
  24. switch(duzeLitery) {
  25. case (duzeLitery == 0): break;
  26. case (duzeLitery == 1): sila += 5; break;
  27. case (duzeLitery == 2): sila += 15; break;
  28. case (duzeLitery == 3): sila += 20; break;
  29. case (duzeLitery >= 4): sila += 25; break;
  30. default: break;
  31. }
  32. switch(maleLitery) {
  33. case (maleLitery == 0): break;
  34. case (maleLitery == 1): sila += 5; break;
  35. case (maleLitery == 2): sila += 15; break;
  36. case (maleLitery == 3): sila += 20; break;
  37. case (maleLitery >= 4): sila += 25; break;
  38. default: break;
  39. }
  40. switch(cyfry) {
  41. case (cyfry == 0): break;
  42. case (cyfry == 1): sila += 5; break;
  43. case (cyfry == 2): sila += 15; break;
  44. case (cyfry == 3): sila += 20; break;
  45. case (cyfry >= 4): sila += 25; break;
  46. default: break;
  47. }
  48. return sila;
  49. }
  50.  
  51. var obliczenieSilyPin = function(pin) {
  52. var sila = 0;
  53. if(pin == '0000') {
  54. sila = false;
  55. }
  56. else if(/^000([1-9]){4}$/.test(pin)) {
  57. sila += 10;
  58. }
  59. else if(/^00([1-9])0{4}$/.test(pin)) {
  60. sila += 20;
  61. }
  62. else if(/^0([1-9])00{4}$/.test(pin)) {
  63. sila += 20;
  64. }
  65. else if(/^([1-9])00{4}$/.test(pin)) {
  66. sila += 20;
  67. }
  68. else if(/^00([1-9]){4}$/.test(pin)) {
  69. sila += 25;
  70. }
  71. else if(/^0([1-9]){4}$/.test(pin)) {
  72. sila += 50;
  73. }
  74. else if(/^([0-9]){4}$/.test(pin)) {
  75. sila += 75;
  76. }
  77. return sila;
  78. }
Pyton_000
Jesteś pewny że tu wywala Ci błąd?

Poza tym
case (maleLitery == 0): break;
i
default: break;

jest Ci nie potrzebne skoro nic tam nie robisz...
castagir
Już znalazłem źródło smile.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.