[js] Functie problemen

Pagina: 1
Acties:

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
Ik roep een functie aan (onmouseover) die ik argumenten mee kan geven. Dit werkt perfect.
Nu zit er een argument in dat true of false kan zijn. en deze laat wel of geen timer lopen.

Maar als de timer niet loopt dan moet er een met de mousout een functie aangeroepen worden tenminste die functie moet altijd aangeroepen worden maar moet wel of niet gaan lopen aan de hand van de true or false in de voorgaande functie.

OnMouseOver functie
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
28
29
function ActDoToolTip(bTim,oEvt) 
{
    if (nMoX==0&&nMoY==0) 
    {
        nMoX = (oNs4||oNs5)? oEvt.pageX: window.event.clientX + document.body.scrollLeft;
        nMoY = (oNs4||oNs5)? oEvt.pageY: window.event.clientY + document.body.scrollTop;
    }
    if (!oTip) 
        return;
    if (oT01)
        clearTimeout(oT01);
    if (oT02)
        clearTimeout(oT02);
    bTon = true;

    if (!bTipFolMou)
        ActPositionTip(oEvt);
    else 
    {       
        ActPositionTip(oEvt);
        oCss.visibility='visible';
    }
    
    if (bTim)
    {
        clearTimeout(nTID);
        nTID =(setTimeout('SetHideTip()',2000));
    }
}


OnMouseOut functie
code:
1
2
3
4
5
6
7
function SetHideTip() 
{
    if (!oTip)
        return;
    oCss.visibility='hidden';
    bTOn = false;
}


en de aanroep wordt gedaan door middel van

code:
1
<a href="blaat" onmouseover="ActDoToolTip(true,event,0)" onmouseout="SetHideTip" >blaat</a>


Oja jullie hoeven niet aan te komen zetten met van je geeft teveel parameters mee want dit klopt allemaal. ik weet dat ik er maar 2 uitlees maar oEvt kan er 2 bevatten daar zit het probleem dus niet.

Het gaat mij er echt om dus, hoe kan ik ervoor zorgen dat als ik ActDoToolTip op false staat dan moet de sethide tip uitgevoerd worden en zo niet dan niet

Maar dan is er eigenlijk meteen nog een probleem ik kan zo zeggen dat als hij false is voer hem dan maar niet uit maar dan doet hij het later in de functie ActDoToolTip ook niet meer want daar wordt deze aangeroepen door middel van een setTimeout zoals jullie kunnen zien.

Is er iemand die hiervoor een oplossing heeft dan hoor ik dat graag?

iRacing Profiel


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

In de functie SetHideTip een check uitvoeren of ActDoToolTip op false staat?

Ik vind dit 1 van de vaagste verhalen die ik ooit gelezen heb: of je hebt geen idee wat je aan het doen bent of je formulering is wat ongelukkig.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Allereerst zul je je moeten realiseren dat timeouts meerdere threads op kunnen leveren. Hoe meer timeouts je set, hoe meer threads je krijgt, en dus ook hoe meer timeout pointers je bij moet houden.

Je kan dan twee dingen doen:
1. Een object schrijven die al die timeouts voor je bijhoudt. In dat object kun je dan ook die boolean opnemen die het al dan niet uitvoeren van de SetHideTip functie bepaalt. Per element kun je dan e.e.a. aan informatie bijhouden zodra de onmouseover getriggerd wordt.
2. In het element zelf een extra property bijhouden die je informatie bevat (timeout en die boolean) aan de hand van de 'this' referentie.

De eerste is het netst en het best onderhoudbaar. De tweede is het snelst en het makkelijkst.

Overigens, onmouseout="SetHideTip" werkt niet zonder haakjes ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
André schreef op 01 maart 2004 @ 11:56:
Ik vind dit 1 van de vaagste verhalen die ik ooit gelezen heb: of je hebt geen idee wat je aan het doen bent of je formulering is wat ongelukkig.
Hoe bedoel je vaag?
in welk opzicht als ik vragen mag?

iRacing Profiel


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
drm schreef op 01 maart 2004 @ 12:08:
Allereerst zul je je moeten realiseren dat timeouts meerdere threads op kunnen leveren. Hoe meer timeouts je set, hoe meer threads je krijgt, en dus ook hoe meer timeout pointers je bij moet houden.

Je kan dan twee dingen doen:
1. Een object schrijven die al die timeouts voor je bijhoudt. In dat object kun je dan ook die boolean opnemen die het al dan niet uitvoeren van de SetHideTip functie bepaalt. Per element kun je dan e.e.a. aan informatie bijhouden zodra de onmouseover getriggerd wordt.
2. In het element zelf een extra property bijhouden die je informatie bevat (timeout en die boolean) aan de hand van de 'this' referentie.

De eerste is het netst en het best onderhoudbaar. De tweede is het snelst en het makkelijkst.

Overigens, onmouseout="SetHideTip" werkt niet zonder haakjes ;)
Zou je hiervan een concreet voorbeeld kunnen geven zodat ik me er iets meer bij kan voorstellen.

iRacing Profiel


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

jvaneijk schreef op 01 maart 2004 @ 12:09:
[...]


Hoe bedoel je vaag?
in welk opzicht als ik vragen mag?
In die zin vaag dat ik geen hout begrijp van wat je bedoelt :+

disclaimer: dat kan ook aan mij liggen :)

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
André schreef op 01 maart 2004 @ 12:43:
[...]

In die zin vaag dat ik geen hout begrijp van wat je bedoelt :+

disclaimer: dat kan ook aan mij liggen :)
Nou oke zou kunnen. Ik zal het volgende keer iets beter proberen te formuleren. dus met een vraagstelling en bla bla bla
8)7

iRacing Profiel


  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

jvaneijk schreef op 01 maart 2004 @ 13:22:
[...]
Nou oke zou kunnen. Ik zal het volgende keer iets beter proberen te formuleren. dus met een vraagstelling en bla bla bla
8)7
Je kan beter je javascript wat duidelijker maken en een linkje erbij geven zodat wij kunnen zien wat je nou eigenlijk wilt. Waarom trouwens een nieuw topic? Of is dit weer een andere vraag dan je vorige topic?

disjfa - disj·fa (meneer)
disjfa.nl


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
disjfa schreef op 01 maart 2004 @ 13:24:
[...]

Je kan beter je javascript wat duidelijker maken en een linkje erbij geven zodat wij kunnen zien wat je nou eigenlijk wilt. Waarom trouwens een nieuw topic? Of is dit weer een andere vraag dan je vorige topic?
Kan geen linkje bij want het staat niet online. Is intern en het bedrijf waar ik stage loop krijgt denk ik een stuip als het naar buiten gaat. :> en het is wel iets anders dan dat andere.

iRacing Profiel


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

jvaneijk:
Zou je hiervan een concreet voorbeeld kunnen geven zodat ik me er iets meer bij kan voorstellen.
Nou vooruit, omdat ik in een belachelijk goede bui ben. Maar ik vind wel dat je dan wat terug moet doen :P. Ik geef de code, jij legt uit wat het doet, anders leer je er niks van.

Voorbeeld 1.
Een object dat de elementen bijhoudt.
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
   var objects = {};
   
   function over ( el, b ) {
      if ( !(el in objects) ) {
         objects[el] = {};
      }
      
      objects[el]['someBool']=b;
      
      if ( objects[el]['someBool'] ) {
         if ( objects[el]['timeoutId'] ) {
            clearTimeout (objects[el]['timeoutId']);
         }
         objects[el]['timeoutId'] = setTimeout ( 'alert(\'woei\');', 1000 );
      } else {
         objects[el]['timeoutId'] = false;
      }
      el.style.color = '#f00';
   }
   
   function out (el) {
      if (el in objects && objects[el]['timeoutId']) {
         clearTimeout(objects[el]['timeoutId']);
      }
      el.style.color = '#000';
   }


Voorbeeld 2.
De referentie aan het element zelf gebruiken
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   function over ( el, b ) {
      if ( b ) {
         if ( el.timeoutId ) {
            clearTimeout(el.timeoutId);
         }
         el.timeoutId = setTimeout ( 'alert(\'woei\');', 1000 );
      } else {
         el.timeoutId = false;
      }
      el.style.color = '#f00';
   }
   
   function out (el) {
      if (el.timeoutId) {
         clearTimeout(el.timeoutId);
      }
      el.style.color = '#000';
   }


De HTML die met beide voorbeeldjes werkt:
HTML:
1
2
<a onmouseover="over(this,true)" onmouseout="out(this)">some a</a><br />
<a onmouseover="over(this,false)" onmouseout="out(this)">some other a</a>

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
Oke bedankt ik ga even kijken wat ik hier allemaal mee kan doen ik snap er nog niet echt heel erg veel van maar dat ga nog wel komen. Daar kom ik wel uit.

tnx ne-way

iRacing Profiel

Pagina: 1