Bonsoir tout le monde,

Tout d'abord je tiens a dire que je suis débutant en Javascript, merci d'être indulgent

Voilà, j'aimerai me lancer dans la création d'une fonction (j'ai essayé d'écrire une classe mais je n'ai pas encore les bonnes notions pour en faire en JavaScript).

Je vous explique tout d'abord mon code HTML...

Cela va être du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<div id="portefolio">
<div id="picture_1" class="picture_portefolio"></div>
<div id="content_2" class="content_portefolio"></div>
<div id="picture_2" class="picture_portefolio"></div>
<div id="content_2" class="content_portefolio"></div>
<div id="picture_3" class="picture_portefolio"></div>
<div id="content_2" class="content_portefolio"></div>
</div>
Lors du clique sur un picture_[0-9*] j'aimerai qu'il récupère le nombre pour ouvrir l'élément content_[nombre_reçu]

Sachant que j'aimerai que quand je clique sur un autre élément, il me ferme celui qui est ouvert.

Le problème pour moi est enfaite de récupérer le nombre dérrière et de lister les éléments déjà ouvert.

Je pense que pour pouvoir lister tout les éléments déjà ouvert il faut utiliser Event.findElement()...


Voilàa ce que j'ai fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33
34
35
var Portefolio = Class.create();
 
Portefolio.prototype = {
	initialize : function(element) {
		this.element = $(element);
	},
 
	getInit : function() {
 
		Event.observe('picture_[0-9*]', 'click', function()
		{
			content_open = Event.findElement(this.element, 'content_');
			if(content_open != null)
			{
				Effect.BlindUp(content_open.tagName);
			}
			else
			{
				nbr = ??;
				id_content = 'content_' + nbr;
				Effect.toggle(id_content, 'slide');
				if(id_content.visible())
				{
					Effect.ScrollTo(id_content);
				}
			}
 
		}
 
	}
 
 
}
 
Event.observe(window,'load',function(){ new Portefolio('portefolio'); });
Pouvez vous me donner un coup de main s'il vous plait ?

Merci d'avance,
Cordialement