Bonjour à tous,

J'ai un problème sur lequel je me prend la tête depuis quelques heures, sans aucun résultat malheureusement. Ce dernier concerne une classe javascript. En gros pour que ce soit simple, j'ai préféré prendre un exemple plus simple mais sur lequel le problème persiste également.
Voilà le code source:

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
<html>
<head>
<title>Essai</title>
<script>
 
function change(texte) {
	this.txt = texte;
};
 
change.prototype.affiche = function() {
	var myDiv = document.createElement("div");
	myDiv.setAttribute("id", "test");
	document.getElementsByTagName("body")[0].appendChild(myDiv);
	myDiv.style.background = "#cccccc";
	myDiv.innerHTML = '<button onclick="this.couleurTexte()">Changer la couleur du texte</button><br><br>'+this.txt;
};
 
change.prototype.couleurTexte = function() {
	var div = document.getElementById("test");
	div.style.color = "#ff0000";
};
 
var action = new change('bla bla bla');
 
</script>
 
</head>
<body onload="action.affiche()">
 
</body>
</html>
Avec cette petite classe, je désire générer un div dans lequel je met dynamiquement du code HTML avec innerHTML.
Le code que doit contenir le div est donc le suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<button onclick="this.couleurTexte()">Changer la couleur du texte</button><br><br>'+this.txt
Mon problème est le suivant: je n'arrive pas à faire appel à la méthode couleurTexte dans affiche(), avec un résultat correct. Toujours une erreur javascript... N'y a-t-il aucun moyen de faire correspondre deux méthodes en javascript Oo ? Ou plutôt, comment faire correspondre une méthode dans une autre ? J'ai essayé de mettre la même chose en oeuvre en passant par de simple fonction, sans classe, et ça marche bien évidemment.

Autre exemple: si j'avais voulu passer en paramètre de texteCouleur() par exemple une couleur définit dans le constructeur, et bien cette même couleur apparait comme indéfini dans la méthode couleurTexte...
Plus concrètement:

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
function change(texte,couleur) {
	this.txt = texte;
this.couleur = couleur;
};
 
change.prototype.affiche = function() {
	var myDiv = document.createElement("div");
	myDiv.setAttribute("id", "test");
	document.getElementsByTagName("body")[0].appendChild(myDiv);
	myDiv.style.background = "#cccccc";
	myDiv.innerHTML = '<button onclick="this.couleurTexte(this.couleur)">Changer la couleur du texte</button><br><br>'+this.txt;
};
 
change.prototype.couleurTexte = function(couleur) {
	var div = document.getElementById("test");
	div.style.color = couleur;
};
Ci dessus, le paramètre couleur m'apparait comme indéfini par javascript ^^'.
Voilà, si quelqu'un pouvait me débloquer, ça me serait d'un grand secours, ou même si vous avez des pistes pour résoudre ce genre de prob, n'hésitez pas, je suis preneur.

Merci à vous