Gå til innhold

Hvorfor oppdaterer jQuery-variablene mine ikke seg?


Anbefalte innlegg

Jeg holder på med et prosjekt med å lage en statisk nettside med JavaScript + jQuery, hvor vi skal lage en nettside til en oppfunnet hyttebedrift.

 

Det er bare 3 dager igjen til jeg skal levere inn, men jeg aner ikke hvorfor variablene mine for antall personer fungerer eller hvorfor jeg ikke kan slette navnene. Jeg tror det har noe å gjøre med at variablene til antall navn eller variabelen som holder alle navnene ikke oppdateres. Hvordan kan jeg gjøre det? 

 

Her er nettsiden, og problemer ligger i å legge inn personer og så prøve å regne ut pris. Om det er 1 person, vil prisen si at det er 1 person. Om jeg legger til en person, får jeg fortsatt beskjed om at det bare er 1 person. Om jeg legger til enda en person, vil jeg DA få 2 personer; så tre personer; og om jeg trykker på knappen selv om det er fire personer, vil den ikke legge til en til (som er meningen), men prislisten sier nå at det er 4 personer.

 

Til slutt, å fjerne navn fungerer merkelig nok bare om listen er full, og det fungerer bare på det første elementet og jeg aner ikke hvorfor.

 

Kan noen kanskje gi meg en pekepinn på hva jeg gjør galt, og si hva jeg kan gjøre for å få den effekten jeg ønsker?

 

Her er nettsiden: http://folk.ntnu.no/williamo/prosjekt2016/bestill.html#

 

På forhånd, takk! 

Lenke til kommentar
Videoannonse
Annonse

Problemet med remove er mest sannsynlig at det ikke legges til event listeners på close knappen på de nye elementene som dynamisk legges til. Når du skriver removePerson.on('click', ...) så er det bare

de elementene som allerede er på siden når den blir lastet som blir fanget opp. Så hvis du vil at close-knappen på de nye elementene skal fungere så må du enten legge til en click listener direkte på

elementet når det opprettes eller du kan bruke "live" event listeners som vil fange opp nye elementer noe slik som dette:

 
$('.navnContainer').on("click", ".close", function() {
  console.log($(this).parents())
  if (arrayNavn.length !== 1) {
    $(this).parents("span").remove();
  } else {
    errorLog("Du må ha minst en person!");
  }
});
Mulig det er noe av det samme problemet med antall personer også. Prøv å bruk $('.navn') direkte i calcPrice.

 

 

Anbefaler også at du bruker "var" på alle variablene dine. Uten "var" så ender du opp med variabler som er tilgjengelig utenfor scopet du er i som gjør det vanskelig å holde oversikt på hvor ting endres når programmet blir større.

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...