Meerdere waardes toevoegen aan array (localstorage)

  • Onderwerp starter Onderwerp starter pum
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

pum

Gebruiker
Lid geworden
18 dec 2009
Berichten
193
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?

[JS]$('.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')
}
});[/JS]
 
Laatst bewerkt:
Oplossing

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.

[JS]$('.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')
}
});[/JS]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan