TroxyMedlem sedan mars 20041 505 inlägg Kod:
document.getElementById(menu_id).style.display = "block";
Detta kör jag i en funktion som jag anropar lite över allt...
menu_id innehåller namnet på ett element som jag ska byta ut lite attribut på, i detta exempel display-attributet i CSS.
Hur skapar jag en kod som förhindrar att det blir scriptfel om menu_id innehåller ett id som inte finns?
Kanske en If-sats som kollar: "Om detta id finns..." osv?
Hjälp tack!
dectgapMedlem sedan sep. 20021 655 inlägg var elm;
if(elm = document.getElementById(menu_id))
elm.style.display = "block";
borde fungera.
TroxyMedlem sedan mars 20041 505 inlägg Tack!
Några frågor:
1. Varför behövs inga klammrar {} efter if-satsen?
2. Hur kollar man så att flera objekt måste finnas?
dectgapMedlem sedan sep. 20021 655 inlägg 1. Om du bara har ett uttryck som ska utföras om if-satsens jämförelse är sann behövs inga måsvingar ( { } ).
Betrakta
if(condition)
expression1; // kommer bara att köras om condition är true
expression2; // kommer att köras oavsett
Vill man att båda ska köras får vi använda måsvingarna för att skapa ett block:
if(condition) {
expression1;
expression2;
}
Trots mitt användande i föregående inlägg är det en god idé att alltid använda måsvingar, även om de inte behövs, eftersom det underlättar läsning av koden och minskar risken för huvudkliande om man ändrar något i koden.
2. Vilken lösning som är smartast beror lite på hur du vill att det ska fungera, men ett sätt är som följer:
var elm1, elm2;
if(elm1 = document.getElementById(menu_id1) && elm2 = document.getElementById(menu_id2)) {
elm1.style.display = "block";
elm2.style.display = "block";
}
För att sortera bort läsare som inte förstår sig på getElementById() (även om de inte är så många idag) kan man ändra till
if(document.getElementById &&
elm1 = document.getElementById(menu_id1) &&
elm2 = document.getElementById(menu_id2)) {
Radbrytningarna är bara där för att raden inte ska bli för lång.
Det är inget tvång att ha tilldelningen i jämförelse-uttrycket (i brist på bättre ord), men för att slippa att först kolla efter om ett element finns och sedan skapa en referens till det slog jag två flugor i en smäll.