Avatar billede spazzer Nybegynder
21. april 2005 - 12:06 Der er 21 kommentarer og
1 løsning

Gentagelse blot med anden værdi

Jeg har en funktion der ligger nogle valgte værdier sammen.. Hvordan får jeg den til at gentage med anden værdi i stedet for den lidt snørklede måde som jeg gør det på nedenfor.

var val = parseInt(form.test1.value) + parseInt(form.test2.value) +... osv. op til test15
Avatar billede busschou Praktikant
21. april 2005 - 12:10 #1
for (i=1;i<=15;i++){
  val = val + parseInt(form.test+i.value)
}
Avatar billede jensgram Nybegynder
21. april 2005 - 12:11 #2
for (i = 1; i <= 15, i++) {
    val += form.elements['test' + i].value;
}
Avatar billede jensgram Nybegynder
21. april 2005 - 12:12 #3
Dér var jeg så lidt sent på den, men virker din, busschou?
Avatar billede busschou Praktikant
21. april 2005 - 12:13 #4
måske?... er ikke testet var jo blot en kommentar
JEg ved heller ikke hvorfor spørger vælger parseInt
Det burde vel ikke normalvis være nødvendig?
Avatar billede jensgram Nybegynder
21. april 2005 - 12:14 #5
Nej, det skulle man ikke synes - jeg tænker blot på test+i...
Avatar billede barklund Nybegynder
21. april 2005 - 12:16 #6
Jeg stemmer afgjort for, at kun jensgram's virker. Dog mangler han lige at konvertere til et tal - ellers blive det til streng-konkatenering:

var val = 0;
for (var i=1; i <= 15; i++){
  val += Number(form.elements['test' + i].value);
}
Avatar billede busschou Praktikant
21. april 2005 - 12:16 #7
jaa tænkte jeg også selv
For normalt hiver jeg også ud med elements.
Men hvis det virker for spøger med form.test1.value mon så ikke det virker med i´et også?...men ja..var et hurtigt foreslag ja :o)
Avatar billede jensgram Nybegynder
21. april 2005 - 12:17 #8
barklund > Ja, det er da klart. Jeg tænkte vist + i PHP-forstand siden jeg ikke fangede den med konkatinering :)
Avatar billede barklund Nybegynder
21. april 2005 - 12:19 #9
form.test+i.value

Bliver jo beregnet som:

form.test + i.value

Og da hverken form.test eller i.value har nogen værdi, så giver det bare undefined.
Avatar billede busschou Praktikant
21. april 2005 - 12:21 #10
ok trækker min nok lidt for hurtige kommentar tilbaws så ;o)
Avatar billede mm12010 Nybegynder
21. april 2005 - 12:25 #11
ganske utestet, men det burde faktisk kunne klares på en enkelt line:

for(var t=0,var val=0;t<=15;val+=parseInt(document.forms['FORMNAVN'].elements['test'+t].value),t++);
Avatar billede mm12010 Nybegynder
21. april 2005 - 12:26 #12
og så er det nok bedste at begynde med felt #1 - sorry:

for(var t=1,var val=0;t<=15;val+=parseInt(document.forms['FORMNAVN'].elements['test'+t].value),t++);
Avatar billede barklund Nybegynder
21. april 2005 - 12:59 #13
Skal det være, så lad det være:

for(var t=15,v=0,e=form.elements,p=parseInt;t;v+=p(e['test'+t--].value));

Så er det både mindre _og_ eksekverer hurtigst muligt :)

--
Morten Barklund :)
Avatar billede busschou Praktikant
21. april 2005 - 13:02 #14
hehe funny.
Men knapt så læsbart måske ;o)
Avatar billede mm12010 Nybegynder
21. april 2005 - 13:04 #15
lige mine ord ;-)
Avatar billede olebole Juniormester
21. april 2005 - 16:24 #16
<ole>

- og en smule mindre  :)
  for(var t=15,v=0,e=form.elements;t;v+=parseInt(e['test'+t--].value));

Læsbarhed og performance er altid noget, der bør afvejes. Der er masser af situationer, hvor jeg vægter performance tungere end læsbarheden. Man beskriver blot virkemåden af funktionen i dokumentationen, så er det sjældent et problem  :)

/mvh
</bole>
Avatar billede barklund Nybegynder
21. april 2005 - 16:34 #17
olebole, nu ved jeg ikke så meget om javascript compilere, men for den tilsvarende ovre i actionscript, der er kortere variabelnavne hurtigere end længere - og dermed vil p() køre hurtigere end parseInt().

Det var selvfølgelig kun derfor, at jeg hev den derud - jeg ved godt, at det lige fyldte 4 tegn ekstra :)
Avatar billede busschou Praktikant
21. april 2005 - 16:36 #18
Nu spørger jeg bare lige alle de "kloge hoveder"
Hvor meget tid sparer man når der er tale om 15 felter? ;o)
Avatar billede barklund Nybegynder
21. april 2005 - 16:39 #19
Hurtigste version?

var val = parseInt(form.test1.value) + parseInt(form.test2.value) +... osv. op til test15

Er jeg ret overbevist om :)
Avatar billede mm12010 Nybegynder
21. april 2005 - 17:23 #20
ganske enig med barklund, men jeg dog at forskellen er så lille, at det slet er værd at teste når der kun er tale om 15 felter...
Avatar billede roenving Novice
22. april 2005 - 16:44 #21
Hvis det overhovedet er muligt at måle forskellen ...

-- men prøv i en monster-formular med tusindvis af felter ...

-- men så tager det også flere dage bare at skrive formlen på den hurtigste !-)
Avatar billede jensgram Nybegynder
23. april 2005 - 21:51 #22
Nånå - jeg smider nu lige et svar, hvis det skulle gå hen og blive lukketid ;)
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