Как остановить счетчик JavaScript на определенном номере - PullRequest
0 голосов
/ 13 марта 2019

У меня есть этот код JavaScript для Tampermonkey, который работает на Amazon.Он просто подсчитывает остаток на вашей подарочной карте и выглядит так, будто я получаю деньги.Я хочу знать, можно ли остановить его на определенном номере.

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

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Используйте clearInterval внутри вашего обратного вызова setInterval, чтобы каждый раз, когда вызывался обратный вызов, вы могли проверить, достиг ли новый счет ваш порог, и очистить таймер, если он это сделает.

Если вы проверите значение вне обратного вызова, логика не будет вызываться при каждом увеличении счетчика.

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

Вот демоверсия:

let current = 0;
let interval = null;

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

interval = setInterval(callback, 100);
0 голосов
/ 13 марта 2019

Может быть путем очистки интервала, когда current достигает определенного значения, подобного этому

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