Hét vraag- en antwoordplatform van Nederland

Waar zit de fout in dit stuk JavaScript?

Ik ben bezig met een kalender waarop bezoekers kunnen zien wanneer een bepaald vakantiehuis vrij is of niet. De eigenaar van het huisje kan op een pagina beheren welke weken beschikbaar zijn, door op de cellen (lees 'weken') van een bepaalde tabel te klikken. Wanneer hij op zo'n cel klikt moet de kleur switchen tussen bezet (#cc0000) en beschikbaar (#22aa22).
ik heb de volgende functie:

var bg = new Array();
var h = 1;
var g = "";/* er zijn 13 td's met elke een id: week1,week2 enz */
while (h<14) /*er zijn 13 weken */
{
g = "week" + (h + "");
bg[h] = document.getElementById(g).style.backgroundColor;
h++;
}
function c(w)
{
var n = w.charAt(4);
n = parseInt(n);
var o = "week" + (n + "");
bg[n]=bg[n]+"";
if (bg[n]=="#22aa22" || bg[n]=="rgb(34,170,34)")
{
bg[n]=="#CC0000";
document.getElementById(o).style.backgroundColor = bg[n];
}
else
{
bg[n] = "#22aa22";
document.getElementById(o).style.backgroundColor = bg[n];
}
}

deze functie wordt alsvolgt geroepen door alle 's (weken):




enzovoorts (in totaal 13). Het probleem zit hem volgens mij in de conditie van het if-statement. Alle achtergronden van de 's zijn dit geheel ingesteld op #cc0000 of #22aa22. Het veranderen van rood naar groen werkt wel. Andersom niet meer. Zouden jullie je blik hier eens op willen werpen? Ik heb geen ideeën meer.

Verwijderde gebruiker
12 jaar geleden
682

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Je moet in het eerste deel van je functie c in het statement

bg[n]=="#CC0000"

de dubbele == (vergelijking) vervangen door een enkele = (toekenning)
(Lees meer...)
rose
12 jaar geleden

Andere antwoorden (1)

Verander de 170 [ik bedoel die in rgb(34,170,34)] eens in 176. #22aa22 is namelijk R=#22=34, G=#aa=176, B=#22=34.

Als extra zou ik de variabele o een andere naam geven. o is veel te makkelijk te verwarren met 0, en als je dat doet lees je er geheid overheen.
(Lees meer...)
Cryofiel
12 jaar geleden
rose
12 jaar geleden
Ach Cryo, ik heb ook eerst mijn hoofd over van alles gebroken voor ik zag dat het gewoon om een (veel voorkomend) slordigheidje ging. (== i.p.v. =)
Cryofiel
12 jaar geleden
Ik zie dat rose inmiddels een beter antwoord heeft gegeven - ze heeft een echte fout gevonden. Blijft natuurlijk staan dat mijn twee puntjes, hoewel niet zo essentieel, ook een verbetering geven.

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 2500
Gekozen afbeelding