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 :

Ajout événement onclick à objet DIV


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Points : 46
    Points
    46
    Par défaut Ajout événement onclick à objet DIV
    Bonjour,

    Je souhaite affecter l'événement "onclick" par exemple sur différents éléments DIV de ma page, comme le montre le code source ci-dessous. Les DIV ajoutés à ma page HTML sont des éléments avec un largeur et hauteur de 20px et une bordure de 1px.
    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
     
    function init() {
     
    	// + --------------------------------------
    	// + Ajout des elements dans la page
    	// + --------------------------------------
    	obj_pere = document.getElementById('main');
     
    	var obj_fils = document.createElement('DIV')
    	obj_fils.setAttribute("id","div_1");
    	obj_fils.indice="essai_1";
    	obj_fils.setAttribute("onclick",function(){alert(this.indice)});
    	obj_fils.onclick=function(){alert(this.indice)}  
    	obj_pere.appendChild(obj_fils);
     
    	obj_fils=null;
    	obj_fils = document.createElement('DIV')
    	obj_fils.setAttribute("id","div_2");
    	obj_fils.indice="essai_2";
    	obj_fils.setAttribute("onclick",function(){alert(this.indice)});
    	obj_fils.onclick=function(){alert(this.indice)}  
    	obj_pere.appendChild(obj_fils);
     
    }

    Sous FF, cela marche très, cela marche aussi sous IE mais sous ce dernier, il faut cliquer dans le coin en haut à gauche du DIV pour que cela marche. Si on clique au milieu, cela ne marche pas. Ou se trouve le pb avec IE ?

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	obj_fils.setAttribute("onclick",function(){alert(this.indice)}); // A enlver : redondance
    	obj_fils.onclick=function(){alert(this.indice)}
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Points : 46
    Points
    46
    Par défaut
    Ok pour la redondance de la fonction.
    Mais le problème est toujours là. Quand je lance ma page html, j'ai deux carrées (2 div) avec une bordure de 1px qui apparaissent. Et je suis obligé de cliquer en haut à gauche sur la bordure pour que les messages apparaissent. Or sous FF, je peux cliquer n'importe où sur les carrée.

    Ci-dessous le code complet de ma page test.
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<link rel="stylesheet" href="./css/index.css" type="text/css" media="screen" charset="utf-8" />
    		<script src="./js/index.js" type="text/javascript" charset="utf-8"></script>
    		<title>Navigation</title>
    		<script>
    			function init() {
     
    			// + --------------------------------------
    			// + Ajout des elements dans la page
    			// + --------------------------------------
    			obj_pere = document.getElementById('main');
     
    			var obj_fils = document.createElement('DIV')
    			obj_fils.setAttribute("id","div_1");
    			obj_fils.indice="essai_1";
    			obj_fils.onclick=function(){alert(this.indice)}  
    			obj_pere.appendChild(obj_fils);
     
    			obj_fils=null;
    			obj_fils = document.createElement('DIV')
    			obj_fils.setAttribute("id","div_2");
    			obj_fils.indice="essai_2";
    			obj_fils.onclick=function(){alert(this.indice)}  
    			obj_pere.appendChild(obj_fils);
     
    			}
    		</script>
     
    		<!-- Feuille de style -->
    		<style type="text/css" media="screen">
     
    			body {background-color:#000000;}
     
    			#main {
     				background-color:#FF0000;
    				width:10px; height:10px;
    				font-family:Verdana, Geneva, Arial, Helvetica, sans-serif; color:#FFFFFF;
    			}
     
    			#div_1, #div_2 {
    			z-index:5; width:30px; height:30px; position:absolute;
    			border:1px #ffffff solid; margin:5px;
    			}
     
    			#div_1 { top:100px; left:100px; }
     
    			#div_2 { top:100px; left:150px; }
     
    		</style>
     
    	<body>
    		<div id='main' onclick="javascript:init();">Insertion</div>
    	</body>
    </html>
    Merci de votre aide.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Points : 46
    Points
    46
    Par défaut
    Trouvé le pb. Il manquait window.attachEvent et window.addEventListener

  5. #5
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par sbernard
    Trouvé le pb. Il manquait window.attachEvent et window.addEventListener
    ??
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter un évènement onclick avec un argument au callback
    Par _jey_ dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 17/07/2009, 15h24
  2. Réponses: 30
    Dernier message: 09/04/2009, 14h21
  3. [POO] Comment ajouter des méthodes à un objet DIV ?
    Par Murasame dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/10/2007, 23h01
  4. Réponses: 1
    Dernier message: 24/05/2006, 15h08
  5. [DOM] ajouter un événement à un objet du dom
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/03/2006, 11h55

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