Polczenie kontrolek z błędami

0

Witam, może ktoś odnaleźć na to rozwiązanie? Instrukcje w ogóle nie działają albo działa tylko 2, ale działa tak jak nie powinna. Próbowałem sporo rzeczy, nic nie działa tak jak bym tego chciał. Chcę osiągnąć to co w tych warunkach jest. Dodam, że inne funkcje nie wpływają na wartości zmiennych, które są wykorzystywane w instrukcjach.

let buttonTextDescription = document.querySelector(".button-description"), 
buttonChecbox = document.querySelector(".choice-options");
 
buttonTextDescription.addEventListener("input", function (selectOption) {
 let returnSigns = buttonTextDescription.value.length;
 errorInfromation(returnSigns, selectOption);
})
 
buttonChecbox.addEventListener("change", function (returnSigns) {
 let selectOption = buttonChecbox.options[buttonChecbox.selectedIndex].value;
 errorInfromation(returnSigns, selectOption);
})
 
function errorInfromation (returnSigns, selectOption) {
 let inscriptionsErrors = document.querySelector(".error-text");
 
  if (returnSigns === 0 && selectOption === "") {
    inscriptionsErrors.innerHTML = "występują błędy";
  }
 
  else if (!returnSigns === 0 && selectOption === "") {
    inscriptionsErrors.innerHTML = "brak błędów";
  }
}

to jest cały problematyczny kod, on nie jest uzależniony od innych fragmentów (zweryfikowałem to, nie występują błędy w konsoli). Inne fragmenty nie wpływają na niego.

2
 else if (!returnSigns === 0 && selectOption === "") {

Nie wiem, co chciałeś osiągnąć przez stawianie wykrzyknika w ten sposób. Teraz negujesz po prostu returnSigns (przymuszając przy okazji do booleana) i porównujesz go ściśle (bo ===) z zerem, czyli ten warunek będzie zawsze fałszywy.

Ale jak to miało docelowo wyglądać?
być może chciałeś zanegować całe wyrażenie, wtedy nawias:

 else if (!(returnSigns === 0 && selectOption === "")) {

tylko że ten warunek będzie zawsze prawdziwy, skoro w poprzednim ifie sprawdzasz to samo.

ew. możesz tak:

!(returnSigns === 0)

wtedy zanegujesz, że returnSigns jest równe zero.
Tylko, że to można zapisać też tak:

returnSigns !== 0

więc nie wiem, co chcesz.

wydaje mi się, że po prostu tam powinno być else, a nie else if, bo tak wychodzi z logiki. Chociaż patrząc na całość, to nie kumam tej logiki.

no i errorInfromation to kiepska nazwa funkcji, ponieważ zawiera literówkę. Ogólnie dzikie nazewnictwo robisz. A returnSigns to w sumie nie wiadomo, co to jest, brzmi jak nazwa metody, a jest jakąś daną (ale co to znaczy "signs"? O jakie znaki może chodzić? Chyba, że chodzi o "characters"), na dodatek czasem ta dana jest liczbą, a czasem eventem (bo masz:

buttonChecbox.addEventListener("change", function (returnSigns) {
 // ...
 errorInfromation(returnSigns, selectOption);
})

czyli przekazujesz obiekt eventu jako returnSigns (ale w drugiej funkcji już przekazujesz to buttonTextDescription.value.length)

0

Napisałem, że chcę osiągnąć to co warunkach, czyli jeżeli returnSigns jest równe 0 i selectOption jest równe pusty ciąg znaków to zmienia się innerHTML zmiennej inscriptionsErrors na ("błędy"). Czyli, że są ogólnie błędy w działaniu projektu. A jak jest przeciwny warunek, to zmienia się innerHTML zmiennej inscriptionsErrors na pustą treść, czyli nie ma błędów w projekcie. Czemu nie kumasz całości? Staram się odpowiednio nazywać zmienne/ funkcje, dopiero uczę się programowania 6 miechów, więc jeszcze popełniam błędy w różnych aspektach i dalej będę je powielać zapewne.

Wykrzyknikiem chciałem osiągnąć to, żeby warunek 2 był zależny od 1 warunku, a z samym else będzie cała instrukcja zależna od innej instrukcji, którą mam w tej samej funkcji, czego nie chcę. Tej literówki w nazwie nie widziałem. Nie zrobiłem jej celowo.

0

ale samo użycie else już implikuje, że warunek z poprzedniego ifa będzie fałszywy, więc na to samo wyjdzie, bo jeśli kod wykonując się dojdzie do else, to znaczy, że warunek A był fałszywy i że warunek przeciwny (czyli !A) jest prawdziwy. Czyli sprawdzasz to, co już masz sprawdzone.

0

ale po co kombinujesz z else if w ogóle?

0

Dobra, już nie ważne. Dzięki za dotychczasowe odpowiedzi. Zamykam temat.

1 użytkowników online, w tym zalogowanych: 0, gości: 1