J'ai ce code javascript pour tampermonkey qui fonctionne sur Amazon. Cela ne fait que compter le solde de votre carte-cadeau et donner l'impression que je reçois de l'argent. Je veux savoir s'il est possible de le faire s'arrêter à un numéro précis.

var oof = document.getElementById("gc-ui-balance-gc-balance-value");

var lastCount = localStorage.getItem("lastCount");

oof.innerText = '$' + lastCount || "$10000";

function animateValue(id) {
    var obj = document.getElementById(id);
    var current = parseInt(localStorage.getItem("lastCount")) || 10000;

    setInterval(function () {
        var nextCount = current++;
        localStorage.setItem("lastCount", nextCount);
        obj.innerText = '$' + nextCount;
    }, 0.1);
}

animateValue('gc-ui-balance-gc-balance-value') 
0
Jmuse.v2 13 mars 2019 à 16:54

2 réponses

Meilleure réponse

Utilisez clearInterval dans votre rappel setInterval afin que chaque fois que le callback est appelé, vous pouvez vérifier si le nouveau nombre a atteint votre seuil et effacer le chronomètre si c'est le cas.

Si vous vérifiez la valeur en dehors du rappel, la logique ne sera pas appelée à chaque incrément de comptage.

function animateValue(id) {
    var obj = document.getElementById(id);
    var current = parseInt(localStorage.getItem("lastCount")) || 10000;

    var interval = null;
    var maxCount = 1000;
    var callback = function() {
        var nextCount = current++;
        if (nextCount === maxCount) {
            clearInterval(interval);
        }
        localStorage.setItem("lastCount", nextCount);
        obj.innerText = '$' + nextCount;
    }
    interval = setInterval(callback, 0.1);
}

Voici une démo:

let current = 0;
let interval = null;

const callback = () => {
    let nextCount = current++;
    console.log(nextCount);
    if (nextCount === 5) {
        clearInterval(interval);
    }
}

interval = setInterval(callback, 100);
1
jo_va 13 mars 2019 à 14:32

Peut-être en effaçant l'intervalle lorsque current atteint une valeur spécifique comme celle-ci

function animateValue(id) {
  // rest of the code
  let interval = setInterval(function() {
    var nextCount = current++;
    localStorage.setItem("lastCount", nextCount);
    obj.innerText = '$' + nextCount;
  }, 0.1);

  if (current === requiredVal) {
    clearInterval(interval)
  }
  return current;
}
0
brk 13 mars 2019 à 13:57