Vraag
Stel je vraag:
Geef antwoord
Doe mee en antwoord

Waar zit de fout in dit stuk JavaScript?

6 maanden geleden | gesloten | deel via Facebook:
pixels
pixels (80)

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 <td>‘s (weken):

<td onclick="c(‘week1’)" class="week" id="week1"></td>
<td onclick="c(‘week2’)" class="week" id="week2"></td>

enzovoorts (in totaal 13). Het probleem zit hem volgens mij in de conditie van het if-statement. Alle achtergronden van de <td>‘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.

Trefwoorden
Klik hier om de 2 antwoorden te lezen.

2 Antwoorden

Sorteren op: Waardering· Datum
De vraagsteller koos dit antwoord als beste:

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

bg[n]=="#CC0000"

de dubbele == (vergelijking) vervangen door een enkele = (toekenning)

6 maanden geleden
0 0  |  1 reactie
Cryofiel
Cryofiel (23490)

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.

6 maanden geleden
1 0  |  4 reacties