webForumDet fria alternativet

Problem med loop

6 svar · 384 visningar · startad av stattin

stattinMedlem sedan jan. 2005500 inlägg
#1

Hej!

Egentligen funkar det som det ska men..


for (i=0;i<50;i++)
{for (nr=315;nr<501;nr++)
{if(document.images[i].src.indexOf("/"+nr+".JPG") != -1)
{ break; }}
if(document.images[i].src.indexOf("/"+nr+".JPG") != -1)
{var s=nr; break; }}

Jag borde ju inte behöva köra if satsen två gånger men det var det ända sättet jag fick till det på.

nitro2k01Medlem sedan aug. 20037 630 inlägg
#2
for (i=0;i<50;i++){
  for (nr=315;nr<501;nr++){
    if(document.images[i].src.indexOf("/"+nr+".JPG") != -1){
      break;
    }
  }
  if(document.images[i].src.indexOf("/"+nr+".JPG") != -1){
    var s=nr;
    break;
  }
}

Lite tabulering hjälper till att klara upp situationen...
Den andra if-satsen får det värde som blir över efter for-loopen, 501 i detta fall. Så nr är alltid 501 när den andra if-satsen körs. Är det så du vill att ska vara?

stattinMedlem sedan jan. 2005500 inlägg
#3

Alting fungerar som jag vill, det enda jag undrar över är varför man måste ha två if satser som gör samma sak två gånger, kan man inte ta bort en?

Peter SMedlem sedan dec. 20025 484 inlägg
#4

Semantiskt är det inte korrekt, eftersom du definierar en lokal variabel i if-satsen utan att använda den (möjligtvis försöker du använda 's' utanför loopen, men det är inte riktigt).

var s = 0;
for (i=0;i<50;i++){
  for (nr=315;nr<=501;nr++){ [b]// '<='[/b]
    if(document.images[i].src.indexOf("/"+nr+".JPG") != -1){
      s = nr;
      break;
    }
  } 
}

if (s != 0){
  // använd 's'
}
stattinMedlem sedan jan. 2005500 inlägg
#5

Njaa.. document.images[].src = null eller inget objekt står det då bara när jag provkör peters variant.

Har för mig att stötte på det problemet förut och enda lösningen vart två if satser.

Peter SMedlem sedan dec. 20025 484 inlägg
#6

Då har du färre än 50 bilder på sidan. Istället för '50' nedan kan du använda document.images.length.

var s = 0;
outer:
for (i=0;i<document.images.length;i++){
  for (nr=315;nr<=501;nr++){ // '<='
    if(document.images[i].src.indexOf("/"+nr+".JPG") != -1){
      s = nr;
      break outer;
    }
  } 
}
stattinMedlem sedan jan. 2005500 inlägg
#7

Att jag inte tänkte på det.. jag skrev 50 bara för att garantera att få med alla bilder.

Då har man lärt sig vågot nytt, tack så mycket.. :bire

128 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
126 ms — hämta tråd, inlägg och bilagor (db)