[JS]onclick uitstellen tot functie uitgevoerd is

Pagina: 1
Acties:

  • Wizz15
  • Registratie: Januari 2004
  • Laatst online: 26-10-2022
Ik ben bezig met een systeem waarbij ik een functie uitvoer na het klikken op een link. Als die functie klaar is zou hij verder moeten gaan naar de volgende pagina.

Dit krijg ik op dit moment niet aan de praat. Als ik
JavaScript:
1
2
3
4
element.onclick = function() { 
      functie(); 
      return false; 
}


gebruik dan voert hij de functie wel uit maar gaat hij daarna (natuurlijk) niet verder naar de volgende pagina.

Weet iemand hoe ik dit kan oplossen? Ik heb een tijdje niet meer met javascript gewerkt en weet eigenlijk niet goed hoe ik dit zou kunnen oplossen. Ik heb ook geprobeerd in die functie true te returnen en het dan als volgt te gebruiken:
JavaScript:
1
2
3
4
element.onclick = function() { 
      if( functie() ) { 
            return true;
      }

maar dat haalde ook niets uit :P dit is overigens geen code request of zo, maar ik weet ook niet precies waar ik op moet zoeken... hier op GoT kan ik iig niets vinden en bij google alleen maar dingen over het uitschakelen van links, maar niet tijdelijk uitschakelen zeg maar...

alvast bedankt iig :)

PSN: RikBruil | BFBC2 stats


  • LegacyCode
  • Registratie: Maart 2002
  • Laatst online: 05:14

LegacyCode

De crack van de division

JavaScript:
1
2
3
element.onclick = function() { 
      return functie();
 }

En dan zorgen dat je functie true/false returned.
Denk dat dat is wat je zoekt.

legacycode.net


  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Wat je nog zou kunnen doen, is handmatig de location laden die in de link staat (mochten andere oplossingen niet in alle browsers lekker werken).

Zoiets:
JavaScript:
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
28
29
30
mylink.onclick = function(e) {

  if ( !e ) e = window.event; // for internet explorer
  var eventSrc = getEventSrc(e);

  // hier je code uitvoeren die je sowieso uitgevoerd wilde hebben

  if ( eventSrc.getAttribute('href') ) {
    document.location = eventSrc.getAttribute('href');
  }
  return false;  
}

    /**
     * Get the src (or, Mozilla: target) object of the given event.
     * 
     * @author R.J.T. de Vries <rdevries@thirdwave.nl>
     * @param       object      e           event object to get source for
     * @return  object      targ    eventsource found.
     */
    function getEventSrc(e) {
    
        if ( !e ) return false;
        if ( e.target ) var targ = e.target;
        else if ( e.srcElement ) var targ = e.srcElement;
        if ( typeof (targ) != 'undefined' && targ.nodeType == 3) {
            var targ = targ.parentNode;
        }
        return targ;
    } // getEventSrc()


Niet getest, maar die zou redelijk moeten werken. getEventSrc() functie gebruik ik vrijwel overal en altijd en die werkt gegarandeerd.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

gvanh schreef op maandag 18 december 2006 @ 13:24:
Niet getest, maar die zou redelijk moeten werken. getEventSrc() functie gebruik ik vrijwel overal en altijd en die werkt gegarandeerd.
Waarom zo moeilijk doen? In deze constructie kan je gewoon met het 'this' keyword werken: die verwijst naar je anchor-element ;)

Overigens is location property van het window-object...

Intentionally left blank


  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Ja! Je hebt helemaal gelijk.

Ik gebruik meestal een constructie in de trant van "addEvent(<DOM element object>, 'onclick', 'functie')" ... vandaar dat ik deze setup altijd gebruik.

  • Wizz15
  • Registratie: Januari 2004
  • Laatst online: 26-10-2022
nog bedankt voor de reacties maar ik had het al opgelost met setTimeout ;) aangezien ik bij die ander functie aangeef hoe lang hij moet duren heb ik diezelfde tijd gebruikt bij setTimeout, nu gaat hij gewoon naar de volgende pagina nadat de functie klaar is :)

PSN: RikBruil | BFBC2 stats


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

gvanh schreef op maandag 18 december 2006 @ 13:34:
Ja! Je hebt helemaal gelijk.

Ik gebruik meestal een constructie in de trant van "addEvent(<DOM element object>, 'onclick', 'functie')" ... vandaar dat ik deze setup altijd gebruik.
Een goede addEvent() abstractie zet ook de scope goed ;)

Intentionally left blank

Pagina: 1