Aller au contenu

[Javascript] changer une variable sur un .js


qui.dominatur

Messages recommandés

Bonjour,

J'utilise un menu de type fisheye ( http://simply-basic.com/posts/19419 ).

Les bouton sont codé de cette façon.

<a href="#" onClick="java script: depart = 'paris';"><img src="images/icon.gif" alt="image description" /><span>Icon 1</span></a>

Ce que je voudrai c'est que une fois "depart" défini ,donc après un click, l'image icon.gif garde sa grande taille. Donc que la fonction

restoreSize du fisheye.js appelé soit "désactivée".

restoreSize :

function restoreSize() {

		var x = this.parentNode.getElementsByTagName("span");
		x[0].style.display = 'none';
		if (!this.currentWidth) return;
		fisheyemenu.resizeAnimation(this,this.currentWidth,fisheyemenu.startSize,15,10,0.5);
		fisheyemenu.imgSmall(this);

J'ai essayé de mettre le fisheye.js directement ma page index.html mais dès que je met une condition type

if(depart == null)
{
startSize = 55,
}
if else(depart != null)
{
startSize = 88,
}

ou que je met cet condition tout simplement sur la fonction restoreSize, le script ne fonctionne plus.

Comment puis-je faire ?

Merci de votre aide.

Lien vers le commentaire
Partager sur d’autres sites

<script type="text/javascript">
function customizeMenu (){
  var animElements = document.getElementById("fisheye_menu").getElementsByTagName("img");
  for(var i = animElements.length; i--;) animElements[i].onclick = function(){ depart = this.id;
this.onmouseout = null; };
}
if (window.addEventListener) window.addEventListener("load", customizeMenu, false);
else if (window.attachEvent) window.attachEvent("onload", customizeMenu);
</script>

<a href="#" id="paris"><img src="images/icon.gif" alt="image description" /><span>Icon 1</span></a>

Normalement cela devrait être mieux.

Lien vers le commentaire
Partager sur d’autres sites

Merci de ta réponse, en effet ça marche.

Par contre, comme je me suis mal expliqué ça ne correspond pas tout à fait.

J'aimerai aussi que lorsque l'on clique sur un autre élément du menu, il reste gros et que l'ancien sélectionné redevienne petit.

En fait que l'on puisse choisir avant de valider.

Je pense qu'il doit falloir ajouter une fonction JS à la deuxième partie mais je ne l'a comprend pas bien.

Merci.

P.S : Petit détail en passant, quand on remet la souris sur l'image grossit elle ne se charge plus. J'utilise du XMLhttp pour transmettre la variable, ça peut aussi venir de là.

Lien vers le commentaire
Partager sur d’autres sites

Humm je n'ai pas trop compris ce que tu veux dire dant ton post-scriptum, mais pour le reste tu peux essayer de modifier la "classe" fisheyemenu comme ça :

inhibitedElement : null,
 init : function () {
 	var animElements = document.getElementById("fisheye_menu").getElementsByTagName("img");
 	var titleElements = document.getElementById("fisheye_menu").getElementsByTagName("span");
 	for(var j=0; j<titleElements.length; j++) {
 		titleElements[j].style.display = 'none';
 	}
 	for(var i=0; i<animElements.length; i++) {
 		var y = animElements[i];
 		y.style.width = fisheyemenu.startSize+'px';
 		y.style.height = fisheyemenu.startSize+'px';
 		fisheyemenu.imgSmall(y);
 		animElements[i].onmouseover = changeSize;
 		animElements[i].onmouseout = restoreSize;
 		animElements[i].onclick = selectElement;
 	}
 	function changeSize() {
 		if(this===fisheyemenu.inhibitedElement) return; // si ton élement est celui avec le "focus" ne fait rien
 		fisheyemenu.imgLarge(this);
 		var x = this.parentNode.getElementsByTagName("span");
 		x[0].style.display = 'block';
 		if (!this.currentWidth) this.currentWidth = fisheyemenu.startSize;
 		fisheyemenu.resizeAnimation(this,this.currentWidth,fisheyemenu.endSize,15,10,0.333);
 	}
 	function restoreSize() {
 		if(this===fisheyemenu.inhibitedElement) return; // si ton élement est celui avec le "focus" ne fait rien
 		var x = this.parentNode.getElementsByTagName("span");
 		x[0].style.display = 'none';
 		if (!this.currentWidth) return;
 		fisheyemenu.resizeAnimation(this,this.currentWidth,fisheyemenu.startSize,15,10,0.5);
 		fisheyemenu.imgSmall(this);
 	}
 	function selectElement(){
 		depart = this.id;
 		fisheyemenu.inhibitedElement = this;
 	}
 },

Ce qui change :

- rajout d'un membre static fisheyemenu.inhibitedElement qui stocke l'élement actif

- à l'initialisation on ajoute un "écouteur" sur le clic : animElements.onclick = selectElement;

- dans changeSize et restoreSize rajout d'un point de sortie si l'élement est le dernier cliqué :  if(this===fisheyemenu.inhibitedElement) return;

- la fonction selectElement ou tu peux faire ce que tu veux du moment que tu actualise bien le membre static : fisheyemenu.inhibitedElement = this;

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...