anoniem Geplaatst: 18 maart 2005 Delen Geplaatst: 18 maart 2005 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. Quote Link naar reactie
anoniem Geplaatst: 18 maart 2005 Auteur Delen Geplaatst: 18 maart 2005 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. Quote Link naar reactie
anoniem Geplaatst: 18 maart 2005 Auteur Delen Geplaatst: 18 maart 2005 maak van die # eens een javascript:void(0). :) t. Quote Link naar reactie
anoniem Geplaatst: 18 maart 2005 Auteur Delen Geplaatst: 18 maart 2005 [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] Quote Link naar reactie
anoniem Geplaatst: 19 maart 2005 Auteur Delen Geplaatst: 19 maart 2005 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 Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen