Nano Hash - криптовалюты, майнинг, программирование

уменьшать индикатор выполнения вместо увеличения с помощью javascript

Я еще не очень хорошо разбираюсь в javascript... но мне нужно отредактировать этот код, чтобы значение в #showsecs уменьшалось, а не увеличивалось. Например, таймер обратного отсчета. Я думаю, что вижу, в чем проблема, но я не могу понять, как заставить ее работать правильно. Любая помощь приветствуется!

containerWidth = 485;     
intervalDuration = 250;   

drawBar=0;

function progressBar(duration) { 
    resetStart();                                                                                                           
    ref=new Date();  start=ref.getTime();                                                                                       
    increment = intervalDuration*containerWidth/duration;                                                                       
    barWidth = interval*increment;                                                                                              
    drawBar = setInterval('progress('+duration%intervalDuration+')', intervalDuration);                                         
}

function progress(lastms) {
    document.getElementById('bar').style.width=barWidth;                                                                        
    document.getElementById('showsecs').innerHTML=Math.floor(interval*intervalDuration/1000);                               
    interval++;                                                                                                             
    if(interval*increment > containerWidth) {                                                                               
        clearInterval(drawBar);                                                                                             
        end=new Date(); end=lastms+end.getTime();                                                                           
        setTimeout("document.getElementById('bar').style.width=containerWidth",lastms);                                     
        setTimeout("document.getElementById('showsecs').innerHTML="+(lastms+intervalDuration*(interval-1))/1000, lastms);   
        setTimeout('window.open("timeout.html");');                                                                         
        }
        else barWidth = interval*increment;                                                                                 
    }

    function resetStart() {                                                                                                     
         if(drawBar) clearInterval(drawBar);                                                                                    
         document.getElementById('bar').style.width = 0;                                                                        
         document.getElementById('showsecs').innerHTML = 0;                                                                     
         interval = 1;                                                                                                          
}

Ответы:


1

Изменение должно быть довольно простым: вы должны начать с конца (interval = duration) и уменьшить interval--.

Модифицированный код:

containerWidth = 485;     
intervalDuration = 250;   

drawBar=0;

function progressBar(duration) { 
    resetStart(duration);                                                                                                           
    ref=new Date();  start=ref.getTime();                                                                                       
    increment = intervalDuration*containerWidth/duration;                                                                       
    barWidth = interval*increment;                                                                                              
    drawBar = setInterval('progress('+duration%intervalDuration+')', intervalDuration);                                         
}

function progress(lastms) {
    document.getElementById('bar').style.width=barWidth;                                                                        
    document.getElementById('showsecs').innerHTML=Math.floor(interval*intervalDuration/1000);                               
    interval--;                                                                                                             
    if(interval*increment > containerWidth) {                                                                               
        clearInterval(drawBar);                                                                                             
        end=new Date(); end=lastms+end.getTime();                                                                           
        setTimeout("document.getElementById('bar').style.width=containerWidth",lastms);                                     
        setTimeout("document.getElementById('showsecs').innerHTML="+(lastms+intervalDuration*(interval-1))/1000, lastms);   
        setTimeout('window.open("timeout.html");');                                                                         
        }
        else barWidth = interval*increment;                                                                                 
    }

    function resetStart(duration) {                                                                                                     
         if(drawBar) clearInterval(drawBar);                                                                                    
         document.getElementById('bar').style.width = 0;                                                                        
         document.getElementById('showsecs').innerHTML = 0;
         interval = duration;
}
26.03.2015
  • к сожалению, это не решило проблему :( Я тестирую это здесь, если вы хотите посмотреть, что происходит: client.flintls.com/test 26.03.2015

  • 2

    Вот полная переработка вашего кода. Ваш использовал 100% ЦП в цикле, просто ожидая, пока пройдет время.

    Параметры:

    • Продолжительность в мс
    • Плавающий («влево» или «вправо»), заставит полосу двигаться с одной стороны на другую.
    • Шаг в мс (частота обновления)

     <script type="text/javascript">
     function progressBar(duration, float, step) {
        document.getElementById('bar').style.float = float;
        setTimeout(updateProgressBar, step, 0, duration , step, float);
     }
    
     function updateProgressBar(elapsed, duration, step, float) {
        var fullWidth = document.getElementById('container').offsetWidth;
        document.getElementById('bar').style.width = Math.round(
            fullWidth * (elapsed / duration)) + 'px';
        document.getElementById('showsecs').innerHTML = (float === 'right' ? Math.round((duration - elapsed) / 1000):Math.round(elapsed / 1000)) + ' s';
        if(elapsed < duration) {
            setTimeout(updateProgressBar, step, elapsed + step, duration, step, float);
        }
     }
     </script>
    
     <div id="container">
         <div id="bar"></div>
     </div>
     <div id="showsecs">
     </div>
     <script type="text/javascript">
         progressBar(10000, 'left', 50);
     </script>  
    
    26.03.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..