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.

Weet jij het antwoord?

/2500

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)

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.

Stel zelf een vraag

Ben je op zoek naar het antwoord die ene vraag die je misschien al tijden achtervolgt?

/100