2017-02-25 1 views
-1

Ce code fonctionne dans une certaine mesure; Cela change mais seulement très rapidement, je voudrais qu'il change après 3 secondes environ, mais je ne peux pas savoir comment. Merci d'avance!Images en HTML [JAVASCRIPT] à modifier après un certain nombre de secondes

CODE:

<img id = "theImage" src="red.jpg" alt="HTML5 Icon" style="width:250px;height:500px;" align = left> 

<script> 
var sequence = ["red.jpg", "red&amber.jpg", "green.jpg", "amber.jpg"]; 
var place = 0; 

setInterval(change_light,1); 
function change_light() { 
    place += 1; 
    if (place > sequence.length -1) { 
    place = 0; 
    } 
    document.getElementById('theImage').src = sequence[place]; 
} 
+0

Veuillez marquer la bonne réponse s'il vous plaît si vous avez décidé un problème – Antonio

Répondre

1

Vous devez utiliser millisecondes dans la période setInterval. Essayez ceci s'il vous plait. J'ai également simplifié vos conditions:

var sequence = ["red.jpg", "red&amber.jpg", "green.jpg", "amber.jpg"]; 
var place = 0; 
var frameInterval = 1000; // milliseconds 

setInterval(change_light, frameInterval); 
function change_light() { 
    place++; 
    place = place % sequence.length; 
    document.getElementById('theImage').src = sequence[place]; 
} 
+0

Merci beaucoup! Je cherche toujours à m'améliorer :) – AntsOfTheSky

+0

Puis-je demander quelle fonction "place = place% sequence.length" pourrait être définie? Je suppose que ce serait juste le même qu'avant, juste sans le si? Pour une raison quelconque, cela m'a dérouté un peu .. pourriez-vous définir son utilisation s'il vous plaît? J'aime être capable de le comprendre à fond :) – AntsOfTheSky

+0

Bien sûr! C'est un opérateur de reste qui renvoie le reste quand un opérande est divisé par un second opérande. Plus à ce sujet, vous pouvez trouver ici: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder – Antonio

0

setInterval vous attend de passer plusieurs millisecondes (pas secondes)

utiliser comme ceci: setInterval(change_light,3000);

+0

Merci! ----- – AntsOfTheSky

0

C'est très simple, vous avez tout fait correctement! juste un minuscule changement: la fonction setInterval (change_light, 3000); devrait recevoir son temps en millisecondes et non en secondes.

et aussi je voudrais suggérer d'ajouter une valeur de retour à setInterval alors vous serez en mesure d'effacer ce compteur si vous voulez en utilisant:

clearInterval(change_light_id); 

et voici votre code fixe:

<img id = "theImage" src="red.jpg" alt="HTML5 Icon" style="width:250px;height:500px;" align = left> 

<script> 
var sequence = ["red.jpg", "red&amber.jpg", "green.jpg", "amber.jpg"]; 
var place = 0; 

change_light_id = setInterval(change_light,3000); 

function change_light() { 
    console.log(1); 
    place += 1; 
    if (place > sequence.length -1) { 
    place = 0; 
    } 
    document.getElementById('theImage').src = sequence[place]; 
} 
</script> 
+0

Merci beaucoup! – AntsOfTheSky