Permalänk

JavaScript

Hejsan!

Kan någon snälla hjälpa mig? Sitter och pluggar på gamla tentor men har fastnat på en try and catch som jag verkligen inte får till, så undra om någon kanske vet hur man ska lösa den?

Här nedan är själva frågan:
ll validering av inmatade data skall ske med hjälp av felhantering (try-catch) och vid valideringsfel skall ett felobjekt innehållande felmeddelande samt en referens till formulär-komponenten som utlöste felet kastas.
Följande skall valideras:
a.Att inmatat nickname innehåller minst 3 tecken.
b.Att antalet rundor är ett udda tal.
3.Om inget valideringsfel inträffat skall följande ske:
a.Metoden initGlobalObjecti oGameData skall anropas.
b.Spelarens nickname skall sparas i oGameData.
c.Antalet spelrundor skall sparas i oGameData.
d.Metoden initiateGame i oGameData skall anropas.
e.Innehållet i elementet med id ”errorMsg” skall tas bort.f.Funktionen addDrawInformationskall anropas
4.Vid valideringsfel skall det kastade felobjektet tas emot i catch och följande utföras:
a.Felmeddelandet skall skrivas ut i elementet med id ”errorMsg”.b.Kontrollensom orsakade felet skall sättas i fokus.

och såhär har jag gjort!

try{

let nickName = document.querySelector("#nick");
let rundor = document.querySelector("#antalrundor");
//let msg = document.querySelector("#errorMsg");

if (nickName.value.length < 3){
throw {"nodeRef": nickName};

}
if (rundor %2==0){
throw {"nodeRef": rundor};
}
// Om inget valideringsfel hittades så sker detta
oGameData.initGlobalObject();
oGameData.nick = nickName.value;
oGameData.antalrundor = totalRounds.value;
oGameData.initiateGame();

oGameData.addDrawInformation();

document.querySelector("#errorMsg").textContent = "";
return true;
}
// vid för lite bokstäver, errormeddelande
catch (e) {
document.querySelector("#errorMsg").textContent = "Användarnamn för kort! Minst 3 bokstäver";

e.elementRef.focus();
return false;
}

}

Vet någon hur man löser det? Eller vad jag har gjort fel? För jag lyckas bara få fram dedär om användarnamnet

Permalänk

Det är bara din catch som behöver fixas? Kolla e.nodeRef.id ifall det är "nick" eller "antalrundor".

catch (e) { if (!e.nodeRef) throw e; // Någonting annat gick snett const errorMessage = e.nodeRef.id === "nick" ? "Användarnamn för kort! Minst 3 bokstäver" : "Antalet rundor måste vara udda"; document.querySelector("#errorMsg").textContent = errorMessage; e.nodeRef.focus(); }