mitt program laggar
Hej!
Jag har fått flera uppgifter som jag ska göra i en och samma program. För varje uppgift ska man skapa en knapp som kopplas till en funktion. Alla knappar fungerar utom den senaste. Varje gång jag trycker på knappen så fryser hemsidan och det står "javascript program svarar inte, vill du lämna eller stanna" eller något liknande. Vet någon vad som är fel och vad jag kan göra åt saken?
Det låter som att du har skapat en loop som inte slutar, då brukar program lagga och tillslut krascha. Men om du kunde visa koden så blir det lättare att hitta felet.
Ja, det är en loop! Jag lägger in koden nedan. Men jag tror inte att den är oändlig?
Jag kan inte JavaScript, men for-looparna ser konstiga ut.
Hur vill du att de ska fungera?
Ska de köra så länge d > 1? Eller kanske så länge d > 20?
Hursomhelst så har du en tilldelning d = 1 istället för ett villkor (x == 1, x > 1 eller liknande) i for-loopens statement 2.
Dina for-loopar har som villkor "kör till d=1" men är du säker på att detta någonsin blir uppfyllt om du drar ifrån 20 i varje loop iteration?
Det är nog bättre att kolla mot d > 0 istället så vet du att kommer att bli uppfyllas när du loopat tillräckligt mycket.
anders_k skrev:Dina for-loopar har som villkor "kör till d=1"
Nej, d=1 är väl en tilldelning och inte en jämförelse?
Jag tror att satsen d=1 sätter d till värdet 1 och att satsen som sådan får värdet 1, vilket evaluerar till TRUE.
Så loopen avslutas aldrig.
(Om man vill se huruvida d har värdet 1 så ska man skriva d == 1 istället)
Du har en oändlig for loop.
Problemet är att exempelvis alltid är sann. Det är inte så man skriver en for loop.
Du tilldelar 3 värden för , varför?
Jag har inte analyserat resten av koden eftersom for-loopen sticker ut, men du ville loopa inom en boundary.
for (expression 1; expression 2; expression 3) {
// do something..
}
Expression 1 exekveras en gång innan blocket körs
Expression 2 definiera under vilka tillstånd vi ska forsätta köra (typ så länge 3 < a)
Expression 3 körs efter varje iteration av blocket har körts.
Inser du varför din loop aldrig tar slut då?
Yngve skrev:anders_k skrev:Dina for-loopar har som villkor "kör till d=1"
Nej, d=1 är väl en tilldelning och inte en jämförelse?
Jag tror att satsen d=1 sätter d till värdet 1 och att satsen som sådan får värdet 1, vilket evaluerar till TRUE.
Så loopen avslutas aldrig.
(Om man vill se huruvida d har värdet 1 så ska man skriva d == 1 istället)
Ja stämmer ja, det var ett tag sen jag höll på med JS :)
Tack så mkt för hjälpen! Jag provade med d>0 och det funkade:)