[RESOLU] redirection javascript

Eléphant du PHP | 345 Messages

02 avr. 2022, 22:05

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"; 
};


ynx
Mammouth du PHP | 586 Messages

03 avr. 2022, 10:41

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).

Eléphant du PHP | 345 Messages

03 avr. 2022, 12:25

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);

};


Mammouth du PHP | 2703 Messages

03 avr. 2022, 14:29

il faut appeler la fonction, pas la définir.

Eléphant du PHP | 345 Messages

04 avr. 2022, 02:12

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>


ynx
Mammouth du PHP | 586 Messages

04 avr. 2022, 12:16

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"; 
}

Eléphant du PHP | 345 Messages

04 avr. 2022, 17:52

je suis désolé mais la redirection se fait toujours après une seconde.

Mammouth du PHP | 2703 Messages

04 avr. 2022, 20:50

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.

Eléphant du PHP | 345 Messages

05 avr. 2022, 18:23

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>