Avatar billede koch Nybegynder
17. januar 2004 - 22:39 Der er 4 kommentarer og
1 løsning

Hvad e mest krævende .js-funktion/html

Jeg har lavet et galleri vha. en js. funktionen. Funktionen opretter table,billeder og tekst.
Funktionen er lavet som et loop, som der 'for i=0; i<8; i++' opretter en td med et billede og noget tekst. Teksten og billedstien snuppes fra et array.
Er en sådan funktion meget krævende? Det tager forholdsvis lang tid før der overhovedet vises noget, er det pga. loopet?

Ville det være 'bedre' bare at skrive alt koden og bare nøjes med at trække infgormationerne fra arrayet?

Eller vil det spare tids hvis funktionen laves på siden i stedet for i en ekstern .js-fil?
Det skal måske tilføjes at der oprettes variabler til billederne billederne lægges i disse vha. anden loop funk.
Funktionen er i samme eksterne fil.

Når jeg aktiverer min funktion der opretter table, tr,td, billede og tekst, så er det vel også først der at funktionen der opretter billederne uydføres?
Avatar billede o-zone Nybegynder
17. januar 2004 - 23:07 #1
Hvis du ellers looper et overskueligt antal gange, og hverken laver sindsygt tunge ting i dit loop, eller nester loopes, så har det absolut ingenting at sige! et loop på 8 gennemløb er overstået nærmest før det er gået igang!

På webben er den store tidssluger Internet performance, og du skal som regel grimme dig ret meget for at konkurrere med den! :)

Kan det evt. være at dine billeder er tunge, og ikke width/height definerede på forhånd?
Du kan også overveje at lave nogle lettere billeder og sætte ind som lowsrc?

(-:H@zze
Avatar billede o-zone Nybegynder
17. januar 2004 - 23:09 #2
Dit javascript bliver i øvrigt afviklet på klientmaskinen, så hvis folk ellers har en almindelig maskine (og en browser der har en fornuftig og bugfri javascript compiler), så behøver du knapt nok overveje den slags!
Avatar billede koch Nybegynder
18. januar 2004 - 02:35 #3
Når siden loades er der 8 billeder som vises på siden, de fylder pr stk. ca. 7-8 kb. Når man klikker på billedet skal det skifte til et andet, loades disse billeder ikke samtidig?

Hvis jeg laver lowsrc-'finden' er det så kun det billede der vises når siden hentes jeg skal gøre det ved?

Hvad vil det sige at neste et loop?
Avatar billede o-zone Nybegynder
18. januar 2004 - 10:20 #4
lowsrc bliver brugt til at loade en let version af et billede som kan vises mens det fulde (og tungere) billede loader færdigt.
Hvis du har 8 billeder på hver 7-8 kB, så burde der absolut ikke være meget at hente dér. :-/

At neste loops vil sige at lave loops i loops.
Hvis du f.eks. skriver:
for(var i=0;i<10;i++){
  document.write("Denne linie bliver skrevet 10 gange!");
  for(var j=0;j<10;j++){
    document.write("Mens denne linie bliver skrevet 100 gange (10*10=100)!");
  }
}

Så bliver det inderste loop afviklet 100 gange, selvom det ved første øjekast ser mere uskyldigt ud :)
Det er ikke fordi man ikke må neste sine loops, man skal bare være opmærksom på at de inderste linier bliver afviklet flere gange end det inderste loop siger.

Og hvis du laver 3 nestede løkker, så skal de selvfølgelig ganges sammen alle sammen, for at få antallet af gange de inderste linier bliver kørt.

Kan du ikke prøve at vise os din kode, så kan det jo være at vi kan optimere et eller andet. Umiddelbart er der ikke noget du har skrevet endnu der virker kriminelt hastighedsmæssigt på mig! :-?

(-:H@zze
Avatar billede koch Nybegynder
24. januar 2004 - 10:59 #5
Her er koden der opretter variablerne til billederne og lægger billederne deri:

var img=new Array();
        for (i=0;i<16; i++){
          for (j=0;j<=4;j++)
          {
          img[parseInt(item[i][6])+j] = new Image();
          img[parseInt(item[i][6])+j].src="Pics/"+item[i][0]+"/IMAGE00"+(j+1)+".JPG";
          }
        } 

For at få et lowsrc billede kan jeg måske:

var img=new Array();
        for (i=0;i<16; i++){
          for (j=0;j<=4;j++)
          {
          img[parseInt(item[i][6])+j] = new Image();
          img[parseInt(item[i][6])+j].src="Pics/"+item[i][0]+"/IMAGE00"+(j+1)+".JPG";
          img[parseInt(item[i][6])+j]lowsrc = new Image();
          img[parseInt(item[i][6])+j]lowsrc.src="PicsLowsrc/"+item[i][0]+"/IMAGE00"+(j+1)+".JPG";

          }
        } 
   

Derudover har jeg koden der opretter selve min table til alle billederne samt lidt tekst:

function print1(){
var WstatusOver, WstatusOut, dataOver, dataOut
txt="";
for (i=0; i<8; i++){
WstatusOver="window.status='"+item[i][0]+"'; return true;";
WstatusOut="window.status=' '; return true;";
dataOver=""+i+".style.backgroundColor='#C7CBF0'";
dataOut=""+i+".style.backgroundColor='#FFFFFF'";
txt+="<td onMouseover=\"data"+dataOver+", imgStart[i], imgNum[i]\"; onMouseout=\"data"+dataOut+"\"><a href=\"java script:imgShift("+i+");\"><img src=\"Pics/"+item[i][0]+"/IMAGE001.jpg\" height=\"200\" width=\"250\" border=\"0\" name=\"item_"+item[i][5]+"\" alt=\""+item[i][0]+"\" onMouseover=\""+WstatusOver+"\"; onMouseout=\""+WstatusOut+"\"></a><table cellpadding=\"2\" cellspacing=\"2\" border=\"1\" width=\"100%\"><tr><td class=\"Galleri\" id=data"+i+">"+Name+" "+item[i][0]+"<br />"+tekst+" "+item[i][1]+"<br />"+tekst2+" "+item[i][2]+"<br />"+tekst3+" "+item[i][3]+"<br />"+tekst4+" "+item[i][4]+"<br />"+Nr+" "+item[i][5]+"</td></tr></table></td>";
if (i==3)
txt+="</tr><tr>";
}
document.write("<tr>"+txt+"</tr>")
}


Jeg har et array der hedder item, som indeholder 16 'underarrays'. Derudover er der er funktion imgShift(i), men det er ikke den der tager lang tid.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester