Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

javascript functie in functie.

Pagina: 1
Acties:

Verwijderd

Topicstarter
He luitjes,

Ik heb een vraag. Ben niet helemaal wegwijs in java maar snap er wel het een en ander van.. Ik wil een functie waarde meegeven aan een andere functie.

Even uitleg: Je hebt een button die 2 waardes meegeeft aan een functie. plaatje en adres. Nu laat hij als je de functie aanroept een pop-up div zien met een button waar weer een ander functie aan hangt. Deze functie moet de waarde van het adres meekrijgen..

dus even kort:

functie waarde -> popup met een knop - > functie met waardes van eerste functie..

Is dit makkelijk doen?? Ik moet namelijk de functiewaarde in een soort van array krijgen en bij de volgende functie weer kunnen uitlezen maar de waardes blijven enkel binnen de functie tot leven... :(

Help....

  • bulle bas
  • Registratie: Juli 2006
  • Niet online
je bedoelt javascript denk ik?

JavaScript:
1
2
3
4
5
6
7
8
9
10
functie1(plaatje, adres) {
  popup = createPopup()
  button = .. // krijg een referentie naar de button. Gebruik prototype of een andere handige js-library hiervoor
  button.onClick = functie2(adres)
  
}
// wordt aangeroepen als op button geklikt wordt
functie2 (adres)  {
 // doe iets met adres
}

  • André
  • Registratie: Maart 2002
  • Laatst online: 11:08

André

Analytics dude

En wat heb je zelf al geprobeerd? Ik zie niet echt dat je al veel moeite gedaan hebt? Wat lukte er niet bijvoorbeeld?

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 15:53

RM-rf

1 2 3 4 5 7 6 8 9

Verwijderd schreef op maandag 07 april 2008 @ 13:41:

Ik heb een vraag. Ben niet helemaal wegwijs in java maar snap er wel het een en ander van.. Ik wil een functie waarde meegeven aan een andere functie.
Om te beginnen, je vraag betreft javascript, en dat is héél wat anders dan Java...
Zeker als je wilt uitvinden hoe iets werkt is dat enorm belangrijk om niet die fout te maken (anders zit je naar de verkeerde zaken te zoeken en klopt het antwoord hoogstwaarschijnlijk ook niet)...


ten tweede het doorverwijzen van een variabele naar een nieuwe functie is doodeenvoudig en een basis-concept binnen de eenvoudige syntax van javascrupt:

code:
1
2
3
4
5
6
7
function mijnFunctie( mijnVariabele ) 
{
    andereFunctie( mijnVariabele )
}
function andereFunctie( mijnVariabele ) {
   // doe iets met mijnVariabele 
}

zorgt ervoor dat als je mijnFunctie aanroept met een variebele, deze doorgestuurd wordt naar 'andereFunctie'....

wil je echter bv de waarde tijdelijk 'opslaan' zou ik het object dat je genereert gewoon extra attributen geven, en hierin een 'tijdelijke 'waarde' opslaan:

bv createButtton creert dan een element BUTTON, welke je echter zelf een extra attribuut toewijst (bv. 'address'):
code:
1
2
3
4
5
6
7
function createButon( address, parentElm )
{
   var button = document.createElement( "button" )
   button.address = address
   button.onclick = new function() { window.open( this.address ); }
   parentElm.appendChild( button )
}

[ Voor 20% gewijzigd door RM-rf op 07-04-2008 14:18 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

RM-rf schreef op maandag 07 april 2008 @ 14:14:
[...]
code:
1
2
3
4
5
6
7
function createButon( address, parentElm )
{
   var button = document.createElement( "button" )
   button.address = address
   button.onclick = new function() { window.open( this.address ); }
   parentElm.appendChild( button )
}
Pas wel op met het gebruik van this. This heeft een nogal vreemd gedrag (voor mensen met een Java achtergrond tenminste) in JavaScript. This wijst namelijk naar de context waarin de functie uitgevoerd wordt. Met andere woorden, naar het object dat ervoor gezorgd heeft dat de functie uitgevoerd is. Bij een onclick event handler is dat het element waarop geklikt is.

Dit werkt dus niet. This is in de buitenste functie een ander object dan in de binnenste.
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
<script type="text/javascript">
    function init() {
        var a = document.getElementById("a");
        this.variabele = "hallo";
        a.onclick = function() {
            alert(this.variabele); // alert "undefined"
        }
    }

    window.onload = init;
</script>
</head>
<body>
<a href="#" id="a">klik</a>
</body>
</html>


Dit werkt wel, this wijst naar het element waarop het event optrad en die heeft wel het attribuut "variabele".
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
<script type="text/javascript">
    function init() {
        var a = document.getElementById("a");
        a.variabele = "hallo";
        a.onclick = function() {
            alert(this == a); // alert true
            alert(this.variabele); // alert "hallo"
        }
    }

    window.onload = init;
</script>
</head>
<body>
<a href="#" id="a">klik</a>
</body>
</html>


Dit werkt ook, self bevat een referentie naar de "oude" this.
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
<script type="text/javascript">
    function init() {
        var a = document.getElementById("a");
        this.variabele = "hallo";
        var self = this;
        a.onclick = function() {
            alert(self.variabele); // alert "hallo"
        }
    }

    window.onload = init;
</script>
</head>
<body>
<a href="#" id="a">klik</a>
</body>
</html>


Om in het laatste voorbeeld this naar het object te laten wijzen, kun je apply gebruiken. Dan kun je gewoon this gebruiken in je functie, zonder last te hebben dat hij naar het element wijst.
http://www.devguru.com/Te...cript/quickref/apply.html

Fat Pizza's pizza, they are big and they are cheezy


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 15:53

RM-rf

1 2 3 4 5 7 6 8 9

JKVA schreef op maandag 07 april 2008 @ 14:57:
[...]

Pas wel op met het gebruik van this.
met alle respect, maar creer je hier zelf niet verwarring die misschien tever gaat voor wat de TS nodig heeft?

mijn pseudo-voorbeeld werkt wel, en biedt datgeen wat de TS vroeg.. jouw extra uitleg over scopes e.d. gaat misschien een end verder dan wat de TS nu nodig heeft (al kan het altijd zi hebben zulke dingen verder uit te zoeken als de TS dat nodig denkt te hebben)

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

RM-rf schreef op maandag 07 april 2008 @ 15:06:
[...]


met alle respect, maar creer je hier zelf niet verwarring die misschien tever gaat voor wat de TS nodig heeft?

mijn pseudo-voorbeeld werkt wel, en biedt datgeen wat de TS vroeg.. jouw extra uitleg over scopes e.d. gaat misschien een end verder dan wat de TS nu nodig heeft (al kan het altijd zi hebben zulke dingen verder uit te zoeken als de TS dat nodig denkt te hebben)
True, maar het kan geen kwaad om dingen meteen goed aan te leren. Het hele web gebruikt closures en de meesten hebben er geen benul van.

Maar misschien ging het wel te ver in relatie tot de vraag, dat kan ik met deze TS niet inschatten...

Fat Pizza's pizza, they are big and they are cheezy

Pagina: 1