[javascript] Optellende input names

Pagina: 1
Acties:

  • uruviel359
  • Registratie: Juni 2004
  • Laatst online: 15-12-2025
Hey allemaal. Ik heb een vrij simpel vraagje maar ik kom er zo snel niet uit.
Ik heb een from met een aantal inputs die een naam in de form van iets_$getal hebben. Elke keer als iemand op bijvoorbeeld submit drukt moet $getal 1 hoger worden.
Dus [iets_1, anders_1] , [iets_2, anders_2] etc.
Tot nu toe heb ik het volgende maar krijg het slecht aan de praat.
Iemand een idee over wat ik fout doe?

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script type="text/javascript" charset="utf-8">
function incrementNumber(form) {
    incrementingElements = document.getElementById(form).getElementsByTagName('input')
    for (var i=0;i<incrementingElements.length;i++) {
        if(incrementingElements[i].type != 'submit') {
            incrementingNumber = incrementingElements[i].name.split('_')
            newNumber = parseFloat(incrementingNumber[1])+1
            incrementingElements[i].name = incrementingNumber[0] + '_' + newNumber
        }
    }
}
</script>

<form action="" method="get" id="naampje" onsubmit="incrementNumber(this.id);"> 
    <p><input type="text" name="foo_1" /></p>
    <p><input type="text" name="bar_1" /></p>
    <p><input type="submit" value="Test"/></p>
</form>

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Kan volgens mij ook niet werken omdat na elke submit je form weer geresetted wordt.

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script type="text/javascript">
function incrementNumber (form) 
{
    var incrementingElements = form.getElementsByTagName('input');
    
    for (var i = 0; i < incrementingElements.length; i++) 
    {
        if (incrementingElements[i].type != 'submit') 
        {
            var incrementingNumber = incrementingElements[i].name.split('_');
            var newNumber = parseInt(incrementingNumber[1]) + 1;
            incrementingElements[i].name = incrementingNumber[0] + '_' + newNumber;
            
            alert(incrementingElements[i].name);
        }
    }
}
</script>

<form action="" method="get" id="naampje">    
    <p><input type="text" name="foo_1" /></p>
    <p><input type="text" name="bar_1" /></p>
    <p><input type="button" value="Test" onclick="incrementNumber(this.form);" /></p>
</form>


Verder mag je best je code wat netter maken ;) gebruik van meer enters en spaties kan geen kwaad maar vergroot de leesbaarheid van je code en het plaatsen van een ; is geen overbodige luxe. Die parseFloat() heb je ook niet nodig als het om integers gaat en het plaatsen van 'var' voor je variabelen houdt deze lokaal.

[ Voor 15% gewijzigd door XWB op 29-08-2006 00:30 ]

March of the Eagles


  • uruviel359
  • Registratie: Juni 2004
  • Laatst online: 15-12-2025
Hacku schreef op dinsdag 29 augustus 2006 @ 00:26:
Kan volgens mij ook niet werken omdat na elke submit je form weer geresetted wordt.

Verder mag je best je code wat netter maken ;) gebruik van meer enters en spaties kan geen kwaad maar vergroot de leesbaarheid van je code en het plaatsen van een ; is geen overbodige luxe. Die parseFloat() heb je ook niet nodig als het om integers gaat en het plaatsen van 'var' voor je variabelen houdt deze lokaal.
Je hebt helemaal gelijk ... was verder niet zo;n probleem heb nu gewoon een ander knopje ervoor gebruikt wat niet het formulier submit. :9
Van enters krijg ik nachtmerries ... maar je hebt wederom gelijk wat betreft spaties. het plaatsen van var en ;'s in Javascript vind ik meestal een overbodige luxe, kwestie van gewenning denk ik.
Dat van parseFloat ... bedankt dat was ook meer een quickfix dan iets waar ik over nagedacht had :p

Ben betrekkelijk nieuw in de hele javascript/programmeer scene , het alle begin is moeilijk :P

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Die var plaats je toch maar beter, zo voorkom je vroeg of laat problemen ;)

March of the Eagles


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:00

crisp

Devver

Pixelated

Hacku schreef op dinsdag 29 augustus 2006 @ 00:55:
Die var plaats je toch maar beter, zo voorkom je vroeg of laat problemen ;)
Plus dat het sneller is aangezien de interpreter niet elke keer de hele scope-chain af hoeft.

[ Voor 4% gewijzigd door crisp op 29-08-2006 01:02 ]

Intentionally left blank


  • uruviel359
  • Registratie: Juni 2004
  • Laatst online: 15-12-2025
crisp schreef op dinsdag 29 augustus 2006 @ 01:01:
[...]

Plus dat het sneller is aangezien de interpreter niet elke keer de hele scope-chain af hoeft.
Daar heb je nog een punt ook :p . Maar als je naar mijn for-lus kijkt zie je dat ik weinig om optimalisatie geef :p
Pagina: 1