【问题标题】:Javascript progress bar clear value after load加载后Javascript进度条清除值
【发布时间】:2016-03-22 14:46:41
【问题描述】:

我有一个带有 JavaScript 进度条的简单 HTML 页面。 我的页面每 30 秒重新加载一次,我的进度条设置为 30 秒的加载时间。

我想要的是每次页面重新加载时清除进度条的值,并从 0 到 100% 重新开始加载。谁能帮我这个?谢谢!

这是我目前所拥有的。

HTML

<input type="text" id="val1" placeholder="Search" onKeyPress="Val1KeyPress()" onKeyUp="Val1KeyPress()"/>

<input type = "text" id="date" placeholder="date to">
            <img src="cal1.png" />
            <input type = "text" id="date1" placeholder="date from">
            <img src="cal2.png" />
            <input type="submit" id="btn_search"  value="search"/>


<div class = "iframe-div">
            <iframe id="iframe" src='http://mypage.aspx' runat="server" allowTransparency='true' width='850px' height='500px'>
            </iframe> 

        </div>

  <div id="progressbar" class="progress-wrap progress" data-progress-percent="100">
  <div class="progress-bar progress"></div>
  </div>

CSS

  .progress {
  width: 100%;
  height: 50px;
  margin-top:-10px !important;
}

.progress-wrap {
  background: #f80;
  border-radius: 0 !important;
  overflow: hidden;
  position: relative;
}
.progress-wrap .progress-bar {
  background: #ddd;
  position: absolute;

}

Javascript

    <script>
function setURL(url){
    document.getElementById('iframe').src = url;
}
</script>

<script>
    function Val1KeyPress()
    {
        var val1 = document.getElementById("val1");
        var sr = val1.value;
        var lblValue = document.getElementById("lblValue");
        lblValue.innerText = " "+s;
    }
    function sample(){
        var val1 = document.getElementById("val1");
        var sr = val1.value;

        var date = document.getElementById("date");
        var dtep = "&dateto=".concat(date.value);

        var date1 = document.getElementById("date1");
        var dtep1 = "&datefrm=".concat(date1.value);

        setURL('http://mypage.aspx?search='.concat(sr, dtep, dtep1))
    }
</script>


  <script>
    var picker = new pikdate
    (
{
    field: document.getElementById('date'),
    firstDay: 1,
    format: 'MM/DD/YYYY',
    minDate: new Date(2000, 0, 1),
    maxDate: new Date(2020, 12, 31),
    yearRange: [2000, 2020]
});
</script>
 <script>
     var picker = new Pikaday(
{
    field: document.getElementById('date1'),
    firstDay: 1,
    format: 'MM/DD/YYYY',
    minDate: new Date(2000, 0, 1),
    maxDate: new Date(2020, 12, 31),
    yearRange: [2000, 2020]
});

</script>

  <script>


 moveProgressBar();
    $(window).resize(function() {
        moveProgressBar();
    });
    function moveProgressBar() {
      console.log("moveProgressBar");
        var getPercent = ($('.progress-wrap').data('progress-percent') / 100);
        var getProgressWrapWidth = $('.progress-wrap').width();
        var progressTotal = getPercent * getProgressWrapWidth;
        var animationLength = 30000;

        // on page load, animate percentage bar to data percentage length
        // .stop() used to prevent animation queueing
        $('.progress-bar').stop().animate({
            left: progressTotal
        }, animationLength);
            clearInterval('.progress-wrap');

         var interval = setInterval(function () {
            clearInterval(interval);

               setURL('http://mypage.aspx?search?stat=');})
            setTimeout(arguments.callee, 31000);
}

【问题讨论】:

  • 您的整个页面在 30 秒后重新加载?然后你不需要 JS 来制作一个在 30 秒内完成的进度条。你可以只使用 CSS 动画。如果您页面的某些部分在 30 之后发生更改并且您需要重新启动进度条,那么您将需要一些 JS。你想做什么?
  • @NamanNehra 嗨,我正在尝试完成整个页面重新加载后每次重新加载的进度条。
  • setURL函数定义在哪里?
  • @NamanNehra 我已经编辑了上面的代码。抱歉,我忘了指明 setURL 部分。谢谢。
  • 我再次更新了答案。试试看。

标签: javascript jquery html progress-bar jprogressbar


【解决方案1】:
<style>
    @keyframes progress {
        from {
            transform: scale(0, 1);
        }
        to {
            transform: none;
        }
    }
    .progress {
        background-color: blue; /*some color*/
        height: 4px; /*some height*/
        position: absolute;
        top: 0;
        right: 0;
        left: 0;
        transform-origin: left;
    }
    .animation {
        animation: progress 30s;
    }
</style>
<div class="progress animation"></div>
<script>
    var progressBar = document.querySelector('.progress');
    function restartprogressBar() {
        progressBar.classList.remove('animation');
        progressBar.offsetWidth = progressBar.offsetWidth;
        progressBar.classList.add('animation');
    };
    setInterval(function() {
        //setURL function comes here
        restartprogressBar();
    }, 30000);
</script>

https://jsfiddle.net/namannehra/osae4u5e/

【讨论】:

  • 谢谢@Naman Nehra。但是你能帮我处理你的页面重新加载脚本吗?我不知道如何在进度条加载后通过 javascript 重新加载来完成你的纯 CSS。
  • 您不需要为页面重新加载编写任何额外内容。它会在页面重新加载时再次运行。或者您需要代码在 30 秒后重新加载页面?
  • 是的,没错。我需要一个代码在 30 秒后重新加载页面。你能帮我么?谢谢。
  • 我需要在“每”30 秒后刷新页面的代码,以及进度条在每 30 秒后重新加载的代码。
  • 我已经更新了答案。我已添加代码以刷新页面。我想向您解释的是,您不要在 relaod 上为进度条编写额外的代码,因为第一次运行的代码将在刷新时再次运行。
猜你喜欢
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-26
相关资源
最近更新 更多