8 svar
139 visningar
pluggis.0 behöver inte mer hjälp
pluggis.0 40
Postad: 11 jan 2023 16:16

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? 

Clas G 2
Postad: 11 jan 2023 16:50

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.

pluggis.0 40
Postad: 11 jan 2023 21:45

Ja, det är en loop! Jag lägger in koden nedan. Men jag tror inte att den är oändlig?

Yngve 40278 – Livehjälpare
Postad: 11 jan 2023 21:57 Redigerad: 11 jan 2023 21:57

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.

anders_k 237
Postad: 11 jan 2023 22:07 Redigerad: 11 jan 2023 22:08

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.

Yngve 40278 – Livehjälpare
Postad: 11 jan 2023 22:15 Redigerad: 11 jan 2023 22:16
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)

Fermatrix 7841 – Fd. Medlem
Postad: 11 jan 2023 22:17 Redigerad: 11 jan 2023 22:21

Du har en oändlig for loop. 

Problemet är att exempelvis d=1d=1 alltid är sann. Det är inte så man skriver en for loop. 

Du tilldelar 3 värden för dd, 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å?

anders_k 237
Postad: 12 jan 2023 11:07
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 :)

pluggis.0 40
Postad: 12 jan 2023 16:54

Tack så mkt för hjälpen! Jag provade med d>0 och det funkade:)

Svara
Close