Toon posts:

[JavaScript] Commando meegeven als argument

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,
is het mogelijk om een commando mee te geven als argument van een functie?
Het is de bedoeling dat ik bijven in een functie een knop generen en dat ik de functie die die moet uitvoeren als er op de knop wordt gedrukt wil ik meegeven als parameter.

als ik bijv iets doe van

myFunction(alert('')); dan voert ie meteen de alert uit...

weet iemand hier misschien een oplossing voor?

Verwijderd

Het is de bedoeling dat ik bijven in een functie een knop generen en dat ik de functie die die moet uitvoeren als er op de knop wordt gedrukt wil ik meegeven als parameter.
Wat staat hier? :?

myFunction("alert('')")
en dan later uitvoeren met eval is het enige wat ik ter plekke kan bedenken.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

jah zo zou het moeten werken inderdaad. maar eval is en blijft ranzig :P

de bovenste alinea text benoem ik bij deze tot het meest wazige stuk text wat ik de laatste paar jaren gelezen heb trouwens!


wat je ook zou kunnen doen:

• dynamisch een button aanmaken.
• daar de onclick van instellen:

JavaScript:
1
2
3
4
function attachOnclick(string) // aanroepen met: attachOnclick('alert("blaat!");');
{
mybutton.onclick = function(){+string+}
}


dat zou moeten werken volgens mij :)

[edit]
werkt niet dus :|

[ Voor 50% gewijzigd door SchizoDuckie op 09-05-2003 19:52 ]

Stop uploading passwords to Github!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:10

crisp

Devver

Pixelated

dit kan gewoon in js:

JavaScript:
1
2
3
4
5
function doe(func, arg) {

  window[func](arg);

}


aan te roepen als bijvoorbeeld: doe('alert', 'hoi');

Intentionally left blank


Verwijderd

Sterker nog, volgens mij werkt dit ook:
JavaScript:
1
2
3
function doe(func, arg) {
    func(arg);
}

Waarbij je het aanroept als:
JavaScript:
1
doe(alert, 'hoi');

[ Voor 27% gewijzigd door Verwijderd op 10-05-2003 11:31 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:10

crisp

Devver

Pixelated

Verwijderd schreef op 10 May 2003 @ 11:30:
Sterker nog, volgens mij werkt dit ook:
JavaScript:
1
2
3
function doe(func, arg) {
    func(arg);
}

Waarbij je het aanroept als:
JavaScript:
1
doe(alert, 'hoi');
klopt! je bent al snel geneigd te moeilijk over die dingen te denken :)

Intentionally left blank


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

w00t weer wat geleerd :) dit ga ik vast nog wel eens gebruiken _o_

Stop uploading passwords to Github!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:10

crisp

Devver

Pixelated

je kan hier leuke dingen mee doen als je onthoud dat een functie niets anders is als een property van het window object (of een property van een zelfgemaakt object). Properties kan je altijd met een array-notatie aanspreken, wat het gebruik van eval dus ook meestal overbodig maakt, zelf al wil je variabele functienamen gebruiken. Stel ik heb een form met een naam, email en adresveld en ik heb aparte functies om naam, email en adres te checken:
JavaScript:
1
2
3
4
5
6
7
8
9
function check_naam(el) {
  // etc.
}
function check_email(el) {
  // etc.
}
function check_adres(el) {
  // etc.
}

ik kan nu in elk input veld een generieke functie zetten om het veld te checken:
HTML:
1
2
3
<input name="naam" type="text" onblur="check(this)" />
<input name="email" type="text" onblur="check(this)" />
<input name="adres" type="text" onblur="check(this)" />

en een functie check maken die uiteindelijk de juiste check_ functie aanroept:
JavaScript:
1
2
3
4
5
function check(el) {

  window['check_'+el.name](el);

}

:)

note: ik zeg niet dat dit de beste manier is om dit soort dingen op te lossen, dit is puur als voorbeeld bedoelt!

javascript is ook een van de weinige talen waar je functies 'on the fly' kan aanmaken:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function make_function(name) {

  if (typeof window[name] == 'undefined') {

    window[name] = function() { alert('woei!'); }

  }

  window[name]();
  // of zelfs: eval(name+'()');

}

[ Voor 48% gewijzigd door crisp op 10-05-2003 14:53 ]

Intentionally left blank

Pagina: 1