Ik ben bezig met het bouwen van een webapplicatie voor een discotheek. Op de index krijgt de bezoeker een overzicht te zien van de aankomende events. Wanneer een bezoeker op een event klikt heeft deze ook de mogelijkheid om zich aan te melden voor een actie, dit kan zijn win 30 munten gratis entree. acties verschillen per event.
Nu heb ik op de index pagina een knop die een overzicht van alle acties toont waarvoor een bezoeker zich heeft aangemeld. Dit gaat met behulp van localstorage. Wanneer een bezoeker de browser sluit en later terug komt ziet deze nog steeds de acties waar hij of zij aan mee doet. Nu loop ik tegen het volgende probleem aan.
probleem
Wanneer ik een actie wil joinen word het id van de huidige actie opgeslagen in localstorage, ik kan deze vervolgend ophalen en tonen. Wanneer ik mij aanmeld voor nog een actie, word de waarde die in de localstorage staat overschreven met de nieuwe waarde. dit is niet de bedoeling![]()
Mijn vraag:
Hoe kan ik er voor zorgen dat wanneer ik op een actie klik deze word toegevoegd aan de array die ik opsla in localstorage?
Javascript Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 $('.btn-joinContest').live('click', function(e){ if (Modernizr.localstorage) { var id = getUrlVars()["id"], regId = [ ], currentlist = localStorage.getItem("contest"); if(currentlist == null) { console.log('Nothing in store'); regId.push(id); localStorage['contest']=JSON.stringify(regId); } else if (currentlist.length === 0) { console.log('Store contains empty value'); regId.push(id); localStorage['contest']=JSON.stringify(regId); } else { console.log('er zit al wat in dit ophalen en vergelijken'); var storedIds = JSON.parse(localStorage['contest']); $.each(storedIds, function(index, contestId){ //console.log('val' + index + 'key' + contestId); if(id == contestId){ console.log('ids zijn gelijk'); } else { console.log('niet gelijk toevoegen'); regId.push(id); localStorage['contest']=JSON.stringify(regId); } }); } } else { console.log('localstorage word NIET deze browser ondersteund u kunt geen contests toevoegen') } });
Laatst aangepast door pum : 13 juli 2012 om 15:25
There is no 'ctrl' button on Chuck Norris's computer. Chuck Norris is always in control.
Ik heb het probleem inmiddels opgelost. De onderstaande code voegt meerdere variabels toe aan de localstorage. Ook word er gechecked of een waarde al bestaat.
Javascript Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 $('.btn-joinContest').live('click', function(e){ if (Modernizr.localstorage) { var id = getUrlVars()["id"], regId = [ ], currentList = localStorage["contest"]; if(currentList == null) { //console.log('eerste klik id toevoegen aan localstorage'); regId.push(id); localStorage['contest']=JSON.stringify(regId); showPopUp($(this), 'contests toegevoegd aan contestlist'); } else if (currentList.length === 0) { //console.log('Store bevat lege waarde'); regId.push(id); localStorage['contest']=JSON.stringify(regId); } else { //console.log('er is al iets toegevoegd aan de localstorage dit ophalen en vergelijken'); regId = JSON.parse(currentList); if(jQuery.inArray(id, regId) > -1){ //console.log('id wat je probeerd toe te voegen zit al in de localstorage'); showPopUp($(this), 'je doet al mee aan deze contest'); } else { // console.log('id komt niet voor in de localstorage dus kan toegevoegd worden'); showPopUp($(this), 'contests toegevoegd aan contestlist'); regId.push(id); localStorage['contest']=JSON.stringify(regId); } } } else { console.log('localstorage word NIET deze browser ondersteund u kunt geen contests toevoegen') } });
There is no 'ctrl' button on Chuck Norris's computer. Chuck Norris is always in control.