modifier l'action onclick ( avec parametre )
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:
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:
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:
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