Page 1 sur 1

redirection javascript

Posté : 02 avr. 2022, 22:05
par nestor94
C'est un petit script de compte à rebours qui fonctionne parfaitement. je souhaiterai qu'à la fin, il redirige vers une page html.
Et ça ne le fait pas :oops:
function paddedFormat(num) {
    return num < 10 ? "0" + num : num; 
}

function startCountDown(duration, element) {

    let secondsRemaining = duration;
    let min = 10;
    let sec = 0;

    let countInterval = setInterval(function () {

        min = parseInt(secondsRemaining / 60);
        sec = parseInt(secondsRemaining % 60);

        element.textContent = `${paddedFormat(min)}:${paddedFormat(sec)}`;

        secondsRemaining = secondsRemaining - 1;
        if (secondsRemaining < 0) { clearInterval(countInterval) };

    }, 1000);
}

window.onload = function () {
    let time_minutes = 01; // Value in minutes
    let time_seconds = 00; // Value in seconds

    let duration = time_minutes * 60 + time_seconds;

    element = document.querySelector('#count-down-timer');
    element.textContent = `${paddedFormat(time_minutes)}:${paddedFormat(time_seconds)}`;

    startCountDown(--duration, element);
}
function RedirectionJavascript(){
  document.location.href="http://monsite.fr/page_html"; 
};


Re: redirection javascript

Posté : 03 avr. 2022, 10:41
par ynx
Bonjour,

La redirection ne se fait pas car la fonction RedirectionJavascript() n'est jamais appelée dans le script.

La fin du compte à rebours est détectée via la condition if (secondsRemaining < 0). Pour rediriger à la fin du compte à rebours, il faut donc appeler la méthode RedirectionJavascript dans le bloc de cette condition (après le clearInterval).

Re: redirection javascript

Posté : 03 avr. 2022, 12:25
par nestor94
Je dois avoir un soucis d'accolade
function paddedFormat(num) {
    return num < 10 ? "0" + num : num; 
}

function startCountDown(duration, element) {

    let secondsRemaining = duration;
    let min = 1;
    let sec = 0;

    let countInterval = setInterval(function () {

        min = parseInt(secondsRemaining / 60);
        sec = parseInt(secondsRemaining % 60);

        element.textContent = `${paddedFormat(min)}:${paddedFormat(sec)}`;

        secondsRemaining = secondsRemaining - 1;
        if (secondsRemaining < 0) { clearInterval(countInterval) }
function RedirectionJavascript(){
document.location.href="https://www.monsite.fr/page..html"; }
	

    }, 1000);
}

window.onload = function () {
    let time_minutes = 01; // Value in minutes
    let time_seconds = 00; // Value in seconds

    let duration = time_minutes * 60 + time_seconds;

    element = document.querySelector('#count-down-timer');
    element.textContent = `${paddedFormat(time_minutes)}:${paddedFormat(time_seconds)}`;

    startCountDown(--duration, element);

};


Re: redirection javascript

Posté : 03 avr. 2022, 14:29
par or 1
il faut appeler la fonction, pas la définir.

Re: redirection javascript

Posté : 04 avr. 2022, 02:12
par nestor94
Bien, cela progresse car la redirection se fait .... mais après une seconde !
<script type="text/javascript">
function paddedFormat(num) {
    return num < 10 ? "0" + num : num; 
}

function startCountDown(duration, element) {

    let secondsRemaining = duration;
    let min = 10;
    let sec = 0;

    let countInterval = setInterval(function () {

        min = parseInt(secondsRemaining / 60);
        sec = parseInt(secondsRemaining % 60);

        element.textContent = `${paddedFormat(min)}:${paddedFormat(sec)}`;

        secondsRemaining = secondsRemaining - 1;
        if (secondsRemaining < 0) { clearInterval(countInterval) };
function RedirectionJavascript(){
document.location.href="https://www.monsite.fr/page.html"; }
RedirectionJavascript();

    }, 1000);
}

window.onload = function () {
    let time_minutes = 00; // Value in minutes
    let time_seconds = 10; // Value in seconds

    let duration = time_minutes * 60 + time_seconds;

    element = document.querySelector('#count-down-timer');
    element.textContent = `${paddedFormat(time_minutes)}:${paddedFormat(time_seconds)}`;

    startCountDown(--duration, element);
}
</script>


Re: redirection javascript

Posté : 04 avr. 2022, 12:16
par ynx
A partir de ton premier code, appeler la fonction RedirectionJavascript après clearInterval :
function paddedFormat(num) {
  return num < 10 ? "0" + num : num; 
}

function startCountDown(duration, element) {
  let secondsRemaining = duration;
  let min = 10;
  let sec = 0;

  let countInterval = setInterval(function () {

    min = parseInt(secondsRemaining / 60);
    sec = parseInt(secondsRemaining % 60);

    element.textContent = `${paddedFormat(min)}:${paddedFormat(sec)}`;

    secondsRemaining = secondsRemaining - 1;
    if (secondsRemaining < 0) {
      clearInterval(countInterval);
      RedirectionJavascript();
    }

  }, 1000);
}

window.onload = function () {
  let time_minutes = 01; // Value in minutes
  let time_seconds = 00; // Value in seconds

  let duration = time_minutes * 60 + time_seconds;

  element = document.querySelector('#count-down-timer');
  element.textContent = `${paddedFormat(time_minutes)}:${paddedFormat(time_seconds)}`;

  startCountDown(--duration, element);
}

function RedirectionJavascript() {
  document.location.href="http://monsite.fr/page_html"; 
}

Re: redirection javascript

Posté : 04 avr. 2022, 17:52
par nestor94
je suis désolé mais la redirection se fait toujours après une seconde.

Re: redirection javascript

Posté : 04 avr. 2022, 20:50
par or 1
il n'a pas cherché à corriger cela, juste dire comment faire les choses plus proprement. bon, en l’occurrence, définir et appeler une telle fonction est discutable.

pour la redirection au bon moment, il faut comprendre quand elle se fait avec le code actuel et l'adapter.

Re: redirection javascript

Posté : 05 avr. 2022, 18:23
par nestor94
Je cloture ce sujet. En fait, j'ai bricolé un autre script qui répond mieux à mes attentes.
1) il gère aussi les jours.
2) la redirection se fait sans problème.
3) il ne se remet pas au début si on rafraichit la page.
<script type="text/javascript">
function RedirectionJavascript(){
document.location.href="https://www.farwest1850.eu/fin_inscri_concours_winchester.html"; }

function compte_a_rebours()
{
var compte_a_rebours = document.getElementById("compte_a_rebours");
var date_actuelle = new Date();
var date_evenement = new Date("Sep 30 12:00:00 2022");
var total_secondes = (date_evenement - date_actuelle) / 1000;
var prefixe = " ";
if (total_secondes < 0)
{
   RedirectionJavascript();
   prefixe = "INSCRIPTIONS CLOSES "; // On modifie le préfixe si la différence est négatif
    total_secondes = Math.abs(total_secondes); // On ne garde que la valeur absolue
}

if (total_secondes > 0)
{
// A faire, tous nos calculs
}
else // Si total_secondes == 0 (puisque l'on a prit sa valeur absolue)
{
   RedirectionJavascript();
}
var jours = Math.floor(total_secondes / (60 * 60 * 24));
var heures = Math.floor((total_secondes - (jours * 60 * 60 * 24)) / (60 * 60));
minutes = Math.floor((total_secondes - ((jours * 60 * 60 * 24 + heures * 60 * 60))) / 60);
secondes = Math.floor(total_secondes - ((jours * 60 * 60 * 24 + heures * 60 * 60 + minutes * 60)));
compte_a_rebours.innerHTML = prefixe + jours + ' Jours ' + heures + ' Heures ' + minutes + ' Minutes et ' + secondes + ' Secondes.';
actualisation = setTimeout("compte_a_rebours();", 1000);
var actualisation = setTimeout("compte_a_rebours();", 1000);
}
compte_a_rebours();
</script>