Bonjour à tous,

je veux faire en sorte que quand on clic sur un element, ca lance une action, et cette action va modifier l'action onclick de façon a ce quand on clique a nouveau sur l'élement, il fasse autre chose...

Or mon élement a un paramtre ( deroulement(elementClique) ) et je l'apelle par onclick=deroulement(this);

pour modifier, je fais elementClique.onclick = enroulement
et forcément mon enroulement lui, modifie aussi l'élement pour faire un deroulement, mais sans param sa coince ....

ensuite quand je fais elementClique.onclick = enroulement(this) par exemple, il appelle ma fonction -_- ... donc comment pouvoir lui dire de remplacer mon deroulement(this) par un enroulement(this) ?




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
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>Brainstorming</title>
      <link rel="stylesheet" type="text/css" href="brainstorming.css" />
      <!-- ici on met les include de code javascript -->
      <script type="text/javascript" src="ajax.js"> </script>
      <script type="text/javascript" src="brainstorming.js"> </script>
 
   </head>
<body>
 
<span id="idee0" onclick="deroulement(this);" ><img src="img/fleche_d.gif" alt="fleche_droite"  /> Idée 1 <br /></span>
<span id="idee1" onclick="deroulement(this);"><img src="img/fleche_d.gif" alt="fleche_droite" /> Idée 2 <br /></span>
<span id="idee2" onclick="deroulement(this);"><img src="img/fleche_d.gif" alt="fleche_droite" /> Idée 3 <br /></span>
</body>
</html>




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
59
60
61
62
63
64
65
66
67
68
function deroulement(elementClique) {
// on met a jour la fleche
   var eleModif = elementClique.firstChild;
   eleModif.setAttribute('src','img/fleche_b.gif');
   elementClique.onclick = enroulement;
// et on envoie la requete   
   var url = "mod_brainstorming.php";
   url = url + "?id=" + elementClique.getAttribute("id") + "&factice=" + new Date().getTime();
   requete.open("GET", url, true);
   requete.onreadystatechange = actualiserPage;
   requete.send(null);
 
}
 
function enroulement() {
elementClique = this;
// on met a jour la fleche
   var eleModif = elementClique.firstChild;
   eleModif.setAttribute('src','img/fleche_d.gif');
   elementClique.onclick = deroulement;
 
elementClique.removeChild(elementClique.childNodes[3]); // on delete le span qui contenait tout !
 
 
 
}
 
function actualiserPage() {
  if (requete.readyState == 4) {
    if (requete.status == 200) {
      /* Obtenir la réponse du serveur */
      var docXml = requete.responseXML;
      /* on créer les tableaux et on enregistre les réponses */
      var nbr = docXml.getElementsByTagName('nb')[0].firstChild.nodeValue;
      var id = docXml.getElementsByTagName('id')[0].firstChild.nodeValue;
      var tabPseudo = Array();
      var tabCom = Array();
      var tabType = Array();
      // on recupere l'identifiant de la zone a modif ( si on a idee0, on recuperer avec substring le 0 )
 
      var ElemModif = document.getElementsByTagName('span')[id.substring(id.length-1,id.length)];
      for(i=0; i< nbr; i++) 
      {
      tabPseudo[i] = docXml.getElementsByTagName('pseudo')[i].firstChild.nodeValue;
      tabCom[i] = docXml.getElementsByTagName('commentaire')[i].firstChild.nodeValue;
      tabType[i] = docXml.getElementsByTagName('type')[i].firstChild.nodeValue;
      }
 
    /* on met a jour le DOM */
    var nouvElePseudo;
    var nouvEleCommentaire;
    var EleMere = document.createElement("span") // on creer un span pour pouvoir par la suite delete plus facilement
    ElemModif.appendChild(EleMere);
         // on crée d'abord les élements et on les insère
     for(i=0;i<nbr;i++) {
         nouvElePseudo = document.createTextNode(tabPseudo[i]);
         nouvEleCommentaire = document.createTextNode(tabCom[i]);
         EleMere.appendChild(nouvElePseudo);
         EleMere.appendChild(document.createElement("br"));
         EleMere.appendChild(nouvEleCommentaire);
         EleMere.appendChild(document.createElement("br"));
     }
 
 
    } else
      alert("Erreur ! Le statut de la requête est " + requete.status);
  }
}
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
 
var requete = null;
try {
  requete = new XMLHttpRequest();
} catch (essaimicrosoft) {
  try {
    requete = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (autremicrosoft) {
    try {
      requete = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (echec) {
      requete = null;
    }
  }
}
 
if (requete == null)
  alert("Impossible de créer l'objet requête!");

merci d'avance