Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2011, 16h30   #1
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Par défaut this non conservé malgré new ?

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
<script type="text/javascript">
arrfunc=new Array()
 function Rebour(div,start) {
          this.chrono=(this.chrono==undefined)?start:this.chrono+1
          document.getElementById(div).innerHTML = ++this.chrono
      }
 
function launch(div, start){
setInterval( function(){ new Rebour(div,start)},1000) 
}
 
function init(){
for(i=1;i<7;i++){
 launch('_'+i,i*3) 
}
}
 
</script>
</head>
 
<body onload="init()">
 
<div id="_1"></div>
<div id="_2"></div>
<div id="_3"></div>
<div id="_4"></div>
<div id="_5"></div>
<div id="_6"></div>
<div id="_7"></div>
</body>
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 17h34   #2
Membre Expert
 
Avatar de Sunchaser
 
Homme Vincent
OPNI
Inscription : décembre 2004
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 41
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : OPNI
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2004
Messages : 1 668
Points : 2 036
Points : 2 036
Bonjour Ô Maitre SpaceFrog,

Je ne comprends peut être pas la ou est le problème, car (comme je suis très curieux et que j'ai envie d'apprendre) je me suis permis d'essayer pour voir ce que ca faisait, et j'ai bien des petites valeurs qui s'affichent dans des divs.
__________________
Citation:
Aux persévérants aucune route n'est interdite
Question: un ver a pied, c'est un millepatte unijambiste ?

Mon dernier trip musical

Citation:
Quiconque construit un jardin devient un allié de la lumière, aucun jardin n'étant jamais surgi des ténèbres
A priori un proverbe Perse ...
Sunchaser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 17h39   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 805
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 805
Points : 35 810
Points : 35 810
Dans ton timer, chaque new Rebour() crée une nouvelle instance (anonyme) de Rebour, le this s'applique donc à chacune de ces instances et non au constructeur lui-même
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 17h52   #4
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 847
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 847
Points : 1 344
Points : 1 344
Citation:
Envoyé par Bovino Voir le message
Dans ton timer, chaque new Rebour() crée une nouvelle instance (anonyme) de Rebour, le this s'applique donc à chacune de ces instances et non au constructeur lui-même
+1 pour le Bovin.

@LaGrenouille: A mon avis, le résultat que tu attends ressemble à ça :

Code js :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
arrfunc=new Array();
 
function Rebour()
{
	this.start = function(div,start) {
		this.chrono=(this.chrono==undefined)?start:this.chrono+1
		document.getElementById(div).innerHTML = ++(this.chrono);
	}
}
 
function launch(div, start){
	var r = new Rebour();
	setInterval( function(){ r.start(div,start)},1000) 
}
 
function init(){
	for(i=1;i<7;i++){
		launch('_'+i,i*3) 
	}
}

edit: et même plus proprement (pour que la fonction "start" ne soit pas définie 7 fois en mémoire) :

Code js :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
arrfunc=new Array();
 
function Rebour(){}
 
Rebour.prototype.start = function(div,start) {
	this.chrono=(this.chrono==undefined)?start:this.chrono+1
	document.getElementById(div).innerHTML = ++(this.chrono);
}
 
function launch(div, start){
	var r = new Rebour();
	setInterval( function(){ r.start(div,start)},1000) 
}
 
function init(){
	for(i=1;i<7;i++){
		launch('_'+i,i*3) 
	}
}

Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 18h03   #5
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 847
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 847
Points : 1 344
Points : 1 344
A noter aussi que :

Code js :
1
2
3
 
	this.chrono=(this.chrono==undefined)?start:this.chrono+1
	document.getElementById(div).innerHTML = ++(this.chrono);

Si chrono est défini, tu l'incrémentes 2 fois. (this.chono+1 & ++this.chrono)
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 20h00   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Merci les gars...
Je n'arrivais pas à joindre le compteur unitairement à l'instance de fonction, ce qui et réalisé dans le code de will sur le this.start ou en prototypant la fonction

pour ce qui ets du double incrément c'est une trace de mes errance sur différents tests, il n'y a pas de double incrément en réalité
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h56.


 
 
 
 
Partenaires

Hébergement Web