IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

evenement sur clic et map


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Points : 17
    Points
    17
    Par défaut evenement sur clic et map
    Bonjour à tous,

    Je suis entrain de réaliser un projet éducatif pour une école et j'ai un soucis de JS. J'ai une carte de france classique auquel j'ai ajouter des zones réactive avec dreamweaver, jusque la pas de soucis.

    Mon problème c'est que quand je clique sur un des points d'une ville de france, par exemple Paris, par dessus la carte une tite info box devrait venir s'afficher avec des informations complémentaires (nombre d'habitant, superficie...)

    et c'est la ou je bloque, je vois pas du tout comment faire... sachant également qu'il faut le faire pour une trentaine de ville j'aimerais bien une idée ou un modèle de fonction pour base en JS.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Salut !

    Je te propose une solution – en prêcheur infatigable que je suis – à base de gestionnaires d’évènements.

    Les gestionnaires d’évènements sont des fonctions que tu déclares dans ton script et que tu attaches à un évènement HTML, sans avoir besoin d’écrire directement dans le HTML. En plus, ils te permettent de faire de la délégation, c’est-à-dire de définir une fonction qui réagit aux clics sur chaque area en surveillant uniquement la map.

    Prenons le fragment HTML suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <img src="carte.jpg" alt="" usemap="#carte" />
    <map id="carte" name="carte">
    	<area id="area_1" shape="rect" coords="100,100,200,200"
    		nohref="nohref" title="machin" />
    	<area id="area_2" shape="circle" coords="150,200,25"
    		nohref="nohref" title="truc" />
    	<area id="area_3" shape="circle" coords="250,150,10"
    		nohref="nohref" title="bidule" />
    </map>
    Note l’attribut nohref qui permet de ne pas être gêné par le comportement par défaut des clics sur area (un changement de page), le title qui permet d’afficher une infobulle et l’id qui aura son importance dans la suite.

    Pour gérer un évènement, la syntaxe dépend du navigateur, la faute à – devinez – MSIE.
    Pour les navigateurs standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maCarte.addEventListener('click', maFonction, false);
    le false concerne une obscure histoire de capture d’évènements dont je ne parlerai pas ici.

    Pour MSIE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maCarte.attachEvent('onclick', maFonction);

    Ensuite il faut pouvoir récupérer l’objet concerné par l’évènement. Là encore, il y a deux syntaxes…
    Standard : IE : Avec d’autres élements HTML, il faudrait filtrer les clics « parasites », sur l’objet surveillé mais en dehors des objets voulus. Heureusement, la map est un peu spéciale : elle « n’existe pas » en dehors des zones définies par les area.


    Vient le moment où l’id va se rendre utile : comme on a récupéré l’objet cliqué, on peut avoir son id, et comme on a prévu le coup, on cherche dans une structure de données – le mot peut faire peur mais ça peut être un simple hash – préparée à l’avance, les infos correspondantes à l’id.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var Infos = {
    	area_1: 'donnees de la ville 1',
    	area_2: 'donnees de la ville 2',
    	// etc.
    }
     
    // ...
    var id = ev.target.id;
    var donnees = Infos[id];
    Voilà pour les explications. J’ai fait un petit zip qui étoffe un peu, en tentant d’être cross-browser, je te le mets ici et je reste dispo pour les explications.

    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Problème avec l'evenement "sur clic"
    Par edonist dans le forum IHM
    Réponses: 1
    Dernier message: 10/07/2008, 21h43
  2. Evenement sur clic zone de liste
    Par Frog74 dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/05/2008, 21h35
  3. evenement sur clic
    Par cels dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/10/2006, 07h39
  4. [VB.net2003][Datagrid]Evenement sur clic
    Par arnolem dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/04/2006, 11h21
  5. Réponses: 3
    Dernier message: 26/10/2005, 09h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo