JavaScript onclick argumenten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 19-09 13:56
Hoe is het met Javascript mogelijk om argumenten mee te geven:

JavaScript:
1
2
3
4
5
6
for(var a = 0; a < response.length; a++)
{
    input = document.createElement('input');
    input.type = 'checkbox';
    input.onclick = this.add_prijs;
}


Ik wil bij de input.onclick een agrument meegeven maar als ik dat zo doe:

JavaScript:
1
input.onclick = this.add_prijs(a);


Dan voert ie het gelijk uit terwijl dat niet de bedoeling is.
Enig idee? :)

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

JavaScript:
1
input.onclick = function() { this.add_prijs(a); } 


/edit:
@hieronder: je hebt gelijk, dat deel had ik niet eens meegenomen ;)

[ Voor 36% gewijzigd door André op 06-04-2010 13:05 ]


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
André schreef op dinsdag 06 april 2010 @ 12:50:
JavaScript:
1
input.onclick = function() { this.add_prijs(a); } 
Iets gaat me zeggen dat dit niet gaat doen wat ZeroXT verwacht. Alle clicks zullen nl. de laatste waarde van a in de for-loop gaan gebruiken. Daar moet een extra closure aan te pas komen zodat elke individuele event de juiste waarde a in scope houdt:

JavaScript:
1
2
3
4
5
6
7
8
for(var a = 0; a < response.length; a++)
{
  (function(a){
    input = document.createElement('input');
    input.type = 'checkbox';
    input.onclick = function() { this.add_prijs(a); };
 })(a);
}

Acties:
  • 0 Henk 'm!

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 19-09 13:56
Ik dank jullie zeer. De oplossing van R4gnax heeft gewerkt:


JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
for(var a = 0; a < response.length; a++)
{
    var input = document.createElement('input');
    input.type = 'checkbox';
    input.name = 'extra_optie_'+ id + '_' + response[a]['id'];
    input.id = 'optie_' + response[a]['id'] + '_' + i;
    (
        function(a)
        {
            input.onclick = function() { that.add_prijs(response[a]['prijs']); };
        }
    )(a); 
}


Alleen een vraagje:
Wat doet die (a) op het laatst daar?

[ Voor 5% gewijzigd door ZeroXT op 06-04-2010 13:30 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28
Die voert je anonieme functie uit met (a) als argument.

Het gedeelte tussen de haakjes returned feitelijk de functie "function(a){...}". Dit voer je direct uit met (a); erachter.

[ Voor 53% gewijzigd door Bosmonster op 06-04-2010 13:47 ]