Bonjour

j'ai des liens sur lesquels il y a des appels de fonctions javascript, par exemple
<a href="javascript:maFonction()">toto</a>

Je voudrais qu'en cliquant sur ce lien, la page se déplace sur la balise ancre de mon choix

comment faire?
merci
Modérateur
Salut,

Pour faire une ancre, je te conseille de regarder la FAQ. Smiley cligne

et pour affecter un gestionnaire d'événement (une fonction) au clic sur le lien, il vaut mieux le faire comme suit :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />

		<title>Exemple</title>

		<script type="text/javascript"><!--

var Script = function() {};

var sp = Script.prototype =
{
	connect: function(oElem, sEvType, fn, bCapture)
	{
		return document.addEventListener ?
			oElem.addEventListener(sEvType, fn, bCapture):
			oElem.attachEvent ?
				oElem.attachEvent('on' + sEvType, fn):
				false;
	},

	alert: function()
	{
		alert(this.firstChild.nodeValue);
	},

	init: function()
	{
		return sp.connect(
			window,
			'load',
			function()
			{
				[#blue]var oA = document.getElementById('alert');
				oA.onclick = sp.alert;[/#]
			},
			false
		);
	}
};

var alertOnClick = new sp.init;

		//--></script>
	</head>
	<body>

<p><a href="#" id="access" name="access"></a></p>

<div>...</div>

<p><a href="#access" id="alert">Accès</a></p>

	</body>
</html>
Ici, une alerte se déclenche au clic sur le lien et comme on n'empêche pas la transmission de l'url par un return false dans le gestionnaire d'événement, on se reporte à l'ancre. Il est donc inutile de se servir de focus().
t'as pas plus compliqué? (on croit rêver)

après recherche, la solution suivante fonctionne (1 ligne)
<a href="#ancre" onclick="maFonction(); return true;">toto</a>

Modifié par BuddyMan (11 Oct 2007 - 15:12)
Modérateur
Ah désolé ! Smiley sweatdrop C'est qu'habituellement nous tombons sur des personnes aimables et intéressées mais il semble que ce ne soit pas ton genre.

Pas de problème, je le saurais pour la prochaine fois. Smiley cligne

Merci d'ajouter la mention résolu au titre de ton sujet comme prévu dans les règles. Smiley smile
je suis aimable mais j'avais un problème très basique (forum débutant) et tu me sorts un truc sorti de scriptaculous ou du même genre

Smiley cligne
Modérateur
J'ai simplifié comparé à ce que je fais d'habitude mais pas assez pour ta question, il est vrai.

Si le js est déporté hors de la balise, c'est pour simplifier la maintenance et si je ne me suis pas servi d'un simple onload pour charger le script, c'est pour t'éviter des problèmes (conflits entre différents scripts).

Mis à part le modèle objet (je code toujours ainsi), tout cela a une raison d'être malgré cette apparente complexité.

Ces notions sont expliquées dans les tutos JS du site si tu veux plus d'informations. Smiley smile
Modifié par koala64 (11 Oct 2007 - 16:39)