Application js

Résolu/Fermé
ciltik - Modifié par ciltik le 25/01/2012 à 00:47
 ciltik - 25 janv. 2012 à 14:55
Bonjour, j'aimerai modifier la taille de mes images, toutes les 4 segondes, je n'y arrive pas. Je ne sais pas utiliser setTimeout.
Mon code :
var image = document.getElementsByTagName('p'),
images = image.length;
for(i=0; i<images; setTimeout(function(){i++},4000))

{ if(i=0){
var paragraph = document.getElementById('img1'),
first = paragraph.firstChild;
first.setAttribute( 'height','500px');
first.setAttribute( 'width','500px');
var paragraph = document.getElementById('img2'),
first = paragraph.firstChild;
first.setAttribute( 'height','100px');
first.setAttribute( 'width','100px');
var paragraph = document.getElementById('img3'),
first = paragraph.firstChild;
first.setAttribute( 'height','100px');
first.setAttribute( 'width','100px');
}
else if(i=1)
{
var paragraph = document.getElementById('img2'),
first = paragraph.firstChild;
first.setAttribute( 'height','500px');
first.setAttribute( 'width','500px');
var paragraph = document.getElementById('img1'),
first = paragraph.firstChild;
first.setAttribute( 'height','100px');
first.setAttribute( 'width','100px');
var paragraph = document.getElementById('img3'),
first = paragraph.firstChild;
first.setAttribute( 'height','100px');
first.setAttribute( 'width','100px');
}
else if(i=2)
{
var paragraph = document.getElementById('img3'),
first = paragraph.firstChild;
first.setAttribute( 'height','500px');
first.setAttribute( 'width','500px');
var paragraph = document.getElementById('img2'),
first = paragraph.firstChild;
first.setAttribute( 'height','100px');
first.setAttribute( 'width','100px');
var paragraph = document.getElementById('img1'),
first = paragraph.firstChild;
first.setAttribute( 'height','100px');
first.setAttribute( 'width','100px');
}
}
cordialement



3 réponses

matthoffman Messages postés 405 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
25 janv. 2012 à 13:39
"Alors je devrai utiliser if(i==0) ?

et pour que la fonction tourne toute les 4 secondes je devrait mettre setimeout a chaque boucle ? "

Oui a tes 2 questions.

Quant au code qui fonctionne sur une image et pas sur l'autre, comme je te l'ai explique precedemment, cela vient du fait que tu boucles indefiniment avec un i qui vaut 0, donc forcement tu n'iras jamais dans les autres cas.

Il faut que tu repenses ton algo et ta structure du code.

Je te conseille de creer une fonction (generique au maximum) pour redimensionner tes images.
Ensuite, dans ton script, a l'interieur de ta boucle tu fais appel a set timeout.
1
matthoffman Messages postés 405 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
25 janv. 2012 à 12:28
for(i=0; i<images; setTimeout(function(){i++},4000)) 


Alors deja on ne fait jamais ca parce que t'es en train de dire, je fais une boucle infinie de 4 secondes et j'incremente mon i a la 4eme seconde.
Donc deja tu n'atteindras jamais ta borne maximale puisque tu incrementeras i une seule fois (a la 4eme seconde).

Ensuite tes tests "if(i=2)", tu ne regardes pas si i egal 2, mais tu fais i recois 2

Enfin je ne sais pas ou tu as trouve ca:
var paragraph = document.getElementById('img3'),
first = paragraph.firstChild;
first.setAttribute( 'height','500px');
first.setAttribute( 'width','500px'); 


Mais ca me parait douteux et tire par les cheveux: il suffit de faire ca:
		var paragraph = document.getElementById('img1');
		paragraph.style.width = 500 + 'px';
		paragraph.style.height = 500 + 'px';


Sinon pour timeout cela s'utilise avec une string en premier argument.

Un exemple:
setTimeout("alert(1)", 4000);


Ce code fait que a la 4eme seconde, un "1" va s'afficher en popup.
Cela ne fait pas apparaitre un "1" en popup toutes les 4 secondes !!
0
Bonjour et merci d'avoir répondu.
Quand je fais le code



var image = document.getElementsByTagName('p'),
images = image.length;
var paragraph = document.getElementById('img3'),
first = paragraph.firstChild;
first.setAttribute( 'height','500px');
first.setAttribute( 'width','500px');

l'image n'est pas modifié.

contrairement a celui-ci

var image = document.getElementsByTagName('p'),
images = image.length;
var paragraph = document.getElementById('img1'),
first = paragraph.firstChild;
first.setAttribute( 'height','500px');
first.setAttribute( 'width','500px');
.
Alors je devrai utiliser if(i==0) ?


et pour que la fonction tourne toute les 4 secondes je devrait mettre setimeout a chaque boucle ?

cordialement
0
Merci, le code fonctionne tourne bien.
0