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
Partager