Ga naar inhoud

[JS] onClick en parameters?


Aanbevolen berichten

Het zal vast heel simpel zijn, maar ik krijg het niet voor elkaar... Ik wil een link maken die zichzelf kan aanpassen. Als je op de link klikt moet (o.a.) de tekst veranderen van "Tonen" in "Verbergen". Is er nu een manier om te weten welke link de onClick-event-handler aanroept? [code:1:8d80ef2efa]self.innerHTML = "bla";[/code:1:8d80ef2efa] Het bovenstaande werkt niet, in onClick noch href. Ik dacht ooit iets gelezen te hebben waarin stond dat event-handlers een parameter meekrijgen met daarin een verwijzing naar het object waardoor het wordt aangeroepen, maar ik kan dit nergens op internet terugvinden... [code:1:8d80ef2efa]javascript:(function(e){alert(e)})()[/code:1:8d80ef2efa] Dit resulteert bij het klikken op de link in een melding van "undefined", zowel bij onClick als bij href. Heeft iemand enig idee hoe de initiator van een functie te achterhalen is? Iedereen vast bedankt, Bas.
Link naar reactie
Laat maar, reeds [url=http://www.webreference.com/js/column9/eventobject.html]gevonden[/url]. :D [b:ae6c37a638]Edit:[/b:ae6c37a638] Het zal liggen aan het feit dat ik al de hele dag naar een beeldscherm zit te staren, maar ik kom er echt niet uit. Nu wil ik dat het beeld van de browser niet "naar boven springt" na het aanklikken van de link. Kon je dan niet gewoon "return false" achter alles plakken? Hoe dan ook, ik krijg het niet aan de praat... In een extern JS-bestand staat dit:[code:1:ae6c37a638] var docHead = document.getElementsByTagName("head")[0]; var docHeadScript = document.createElement("script"); docHeadScript.innerHTML = 'function changeState(e){'; docHeadScript.innerHTML += ' e.target.innerHTML = "Woohoo!";'; docHeadScript.innerHTML += ' return false;'; docHeadScript.innerHTML += '}'; docHead.appendChild(docHeadScript); [/code:1:ae6c37a638]Vervolgens staan er in mijn HTML-pagina een aantal links:[code:1:ae6c37a638]<a onclick='changeState(event)' href='#'>Lukt dit?</a>[/code:1:ae6c37a638]Op zich werkt de code prima, de tekst verandert netjes in "Woohoo!", maar de pagina springt de hele tijd naar boven... Wat doe ik fout? - Bas.
Link naar reactie
[quote:e658e6ce8a="BasHamar"] Ik wil een link maken die zichzelf kan aanpassen. Als je op de link klikt moet (o.a.) de tekst veranderen van "Tonen" in "Verbergen". Is er nu een manier om te weten welke link de onClick-event-handler aanroept? [code:1:e658e6ce8a]self.innerHTML = "bla";[/code:1:e658e6ce8a] [/quote:e658e6ce8a][code:1:e658e6ce8a] <a href="no-js.htm" onclick="this.innerHTML='bla'; return false;">Dit is een link</a>[/code:1:e658e6ce8a] Geen # ; javascript:void(); of andere onzin gebruiken als link. [quote:e658e6ce8a="BasHamar"] Het bovenstaande werkt niet, in onClick noch href. Ik dacht ooit iets gelezen te hebben waarin stond dat event-handlers een parameter meekrijgen met daarin een verwijzing naar het object waardoor het wordt aangeroepen, maar ik kan dit nergens op internet terugvinden... [code:1:e658e6ce8a]javascript:(function(e){alert(e)})()[/code:1:e658e6ce8a] Dit resulteert bij het klikken op de link in een melding van "undefined", zowel bij onClick als bij href. Heeft iemand enig idee hoe de initiator van een functie te achterhalen is?[/quote:e658e6ce8a] [code:1:e658e6ce8a] <script type="text/javascript" language="javascript"> <!-- function myfunction(e) { alert(e); // geeft "object" terug ofzo. e.innerHTML='bla'; e.onclick=null; e.href='http://www.google.nl/'; } // --> </script> <a href="onzin-link.htm" onclick="myfunction(this); return false;">Dit is een link</a> [/code:1:e658e6ce8a]
Link naar reactie
Hmmm... Bedankt voor de moeite, maar ik heb even naar je code gekeken en snap eigenlijk niet zo goed wat je ermee wil zeggen... De code zoals ik die in mijn laatste reactie had staan werkt, dus dat zit wel goed. Ik krijg ook van de link netjes de referentie naar het object door, dus ook dat werkt naar behoren. Het enige dat niet werkt (of eigenlijk werkte, ik heb teachers suggestie nog niet geprobeerd maar ga ervan uit dat die werkt) is het voorkómen van het "springen". Ik gaf al aan dat dat mij niet gelukt was met het toevoegen van "return false", op welke plek dan ook. Overigens ben ik het normaal gesproken met je eens dat je nooit JavaScript in een href van een link zo moeten/mogen plaatsen, ivm non-JS gebruikers ed, maar ik ben nu bezig met het schrijven van een FF extension wat eigenlijk het aanstaan van JavaScript garandeert. Hoe dan ook, ik za dit weekend nog even kijken of ik een mooiere oplossing kan scripten aan de hand van jouw code, maar dan moet dat wel op een goede en ongecompliceerde manier in te passen zijn. Jullie horen nog hoe het allemaal lukt. ;) Iig beiden heel erg bedankt. - Bas
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...