Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziwny skok warunkowy
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Orzeszekk
Ja to chyba jestem mało bystry

  1. var validatorResult = window[validatorName].call(fieldInGroup);
  2. if (validatorResult == null)
  3. {
  4. // do nothing
  5. }
  6. else
  7. {
  8. onFail(groupName, validatorResult);
  9. }


dlaczego jak validatorResult == null (sprawdzam w firebugu), to skrypt wykonujac sie zamiast skoczyc do //do nothing, omija "onFail", ale count=max juz wykonuje? pomijajac ze to kompletnie nie ten blok ktory mial wykonac?

dla zapisu if (validatorResult != null) jest to samo. omija onfail i skacze do count=max;

o czyms nie wiem? nie pierwszy raz sie juz tak zdarza. przegladarka mozilla 9.01
Adi32
Zdaje mi się, że miewałem tego typu problemy. Nie wiem dlaczego tak się działo ale pokonałem to chyba jakoś tak:

if (validatorResult.length)

Ale sam jestem ciekaw dlaczego tak się dzieje.
Orzeszekk
pod chromem chodzi dobrze , a opera zawiesza sie na wywołaniu funkcji $(jakistamobiekt).

skoro length pomaga, to byc moze przez firebuga zmienna jest wyswietlana jako null, a w rzeczywistosci to pusty string "".

  1. var validatorResult = window[validatorName].call(fieldInGroup);
  2. if (validatorResult == null || (!(validatorResult.length)))
  3. {
  4. // do nothing
  5. }
  6. else
  7. {
  8. onFail(groupName, validatorResult);
  9. }

dalej nie dziala :/

  1. function validateAllFieldsInGroup(objectChanged)
  2. {
  3. var groupName= $(objectChanged).attr(VALIDATOR_GROUP_OF_FIELDS_ATTR);
  4. var stopEverything=false;
  5. var allFieldsInGroup = $(byClass(groupName));
  6. for (var fieldsCount=0, fieldsMax = allFieldsInGroup.length; fieldsCount < fieldsMax;fieldsCount++)
  7. {
  8. if (stopEverything == false)
  9. {
  10. var fieldInGroup = allFieldsInGroup[fieldsCount];
  11. var validatorsOfThisField = extractValidatorNamesFromFields(fieldInGroup);
  12. if (validatorsOfThisField != null)
  13. {
  14. for (var validatorsCount = 0, validatorsMax = validatorsOfThisField.length; validatorsCount<validatorsMax; validatorsCount++)
  15. {
  16. if (stopEverything==false)
  17. {
  18. var validatorName = validatorsOfThisField[validatorsCount];
  19. try
  20. {
  21. var validatorResult = window[validatorName].call(fieldInGroup);
  22. if (validatorResult.length)
  23. {
  24. onFail(groupName, validatorResult);
  25. stopEverything=true;
  26. }
  27. }
  28. catch (e)
  29. {}
  30. }
  31. }
  32. }
  33. }
  34. }
  35. onSuccess(groupName);
  36. }
  37.  


dobra znalazlo sie obejscie. jesli string istnieje to validator.length nie wywala bledu i wykonuje sie kod z faila.
jesli jest pusty to wywala blad i łapie go catch. jednak smiech zeby w ogole sie pojawialo takie cos i jeszcze wstrzymywalo z robotą godzine...
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.