Vraagje voor de "dhtml god"

Pagina: 1
Acties:

  • paragon
  • Registratie: April 2000
  • Laatst online: 10-09 05:50
Ik heb de volgendefunctie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function f_slideIt(x,y) {
    if (tmr) clearTimeout(tmr);
    if ( x > 0 && y == 0) {
        if (this.x<232) {
            this.moveBy(x,y);
            tmr=setTimeout("oSlider[active].slideIt("+x+","+y+")",step);
        }
    }
    else if ( x < 0 && y == 0) {
        if (this.x>=2) {
            this.moveBy(x,y);
            tmr=setTimeout("oSlider[active].slideIt("+x+","+y+")",step);
        }
    }
    if ( y > 0 && x == 0) {
        if (this.y<270) {
            this.moveBy(x,y);
            tmr=setTimeout("oSlider[active].slideIt("+x+","+y+")",step);
        }
    }
    else if ( y < 0 && x == 0) {
        if (this.y>=2) {
            this.moveBy(x,y);
            tmr=setTimeout("oSlider[active].slideIt("+x+","+y+")",step);
        }
    }
}

Nu wil ik op de plaats waar oSlider[active] staat eigenlijk this hebben maar dat werkt niet. hoe kan ik dit oplossen?

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

ooooh claymore???? :)

Verwijderd

Die kan der nog weinig mee...
Post ff een url

  • Blauw
  • Registratie: Januari 2001
  • Laatst online: 08-09 21:47

Blauw

De Schreeuw

Liever een URL, we zijn hier geen machines :D

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Het kan niet. De code wordt pas ge-evalueerd bij de timeout, en dan heeft this een andere betekenis (null waarschijnlijk)

  • paragon
  • Registratie: April 2000
  • Laatst online: 10-09 05:50
Hmm das niet zo handig want nu kan ik dit dus alleen gebruiken bij objecten die oSliderX heten. Dan moeet ik weer voor een niet object manier gaan en dat wilde ik dus juist wel.

O ja hier een linkje: http://www.paragonxls.xs4all.nl/WebTest/slideText.html

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 20:06

RM-rf

1 2 3 4 5 7 6 8 9

wat marcusK zegt klopt redelijk, de term hiervoor is scope.

de scope bepaalt dat this verwijst naar een specifiek object, de scope is het 'gebied' waarin een functie handelt.

de timeout genereert een string die buiten de functie om wordt aangeroepen (ge-eval-ed).
this is dan niet meer een verwijzing naar het betreffende obect.

er zij hiervoor twee oplossingen mogelijk,
1) gebruik een gloal variabele om de verwijzing naar het object in op te slaan, definieer de variabele buiten de functie en voordat je de timeout aanroept geef je aan dat die variabele = this.
nadeel is enkel dat als je meer gelijktijdige acties aanroept dit verstoringen kan veroorzaken als ze gelijktijdig je global var willen aanspreken

2) gebruik in plaats van het gehele object de id's van een object om an te roepen in functies.
dan kun je de timeout gewoon aanroepen met this.id, ieder element dient een uniek id te hebben (ook al staat het niet in je code bestaat die stiekem wel, gegenereerd tijdens het renderen van de pagina)

* RM-rf hoopt dat de enige echte dhtml god hiermee instemt

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


  • paragon
  • Registratie: April 2000
  • Laatst online: 10-09 05:50
Dat van scope weet ik maar die tweede, heeft het dan nogwel nut om met objecten te werken en hoe gaat het precies in z'n werk?
Pagina: 1