GVKun编程网logo

如何使用无法在JavaScript中修改的计时器?(javascript不可用怎么办)

25

在本文中,我们将详细介绍如何使用无法在JavaScript中修改的计时器?的各个方面,并为您提供关于javascript不可用怎么办的相关解答,同时,我们也将为您带来关于javascript–刷新浏览

在本文中,我们将详细介绍如何使用无法在JavaScript中修改的计时器?的各个方面,并为您提供关于javascript不可用怎么办的相关解答,同时,我们也将为您带来关于javascript – 刷新浏览器时如何使倒数计时器不重置?、javascript – 在刷新时不会重置的计时器、javascript – 如何在输入字段keyup事件上添加等待计时器?、javascript-在JS中清除计时器问题的有用知识。

本文目录一览:

如何使用无法在JavaScript中修改的计时器?(javascript不可用怎么办)

如何使用无法在JavaScript中修改的计时器?(javascript不可用怎么办)

基本上,我正在设计有限的测验应用程序. Use选择一个问题的答案,并使用Ajax请求加载下一个问题.所有问题都必须在2分钟内回答.

时钟在滴答作响,显示还剩多少时间,一到0便显示结果.现在,由于将使用window.setTimeout()实现计时器,因此有可能使用外部书签或类似的方法来修改计时器变量的值.无论如何我可以防止这种情况?我认为这是在文件共享网站(例如megaupload)上实现的.计时器变量的任何伪造都会导致文件请求被拒绝.

解决方法:

让.setTimeout()调用服务器上的AJAX方法来同步时间.不要依赖客户的时间.您也可以在服务器上存储测验的开始时间,然后在测验发布时检查结束时间.

javascript – 刷新浏览器时如何使倒数计时器不重置?

javascript – 刷新浏览器时如何使倒数计时器不重置?

当我刷新浏览器时,计时器重置,那么如何让它不重置?
这是我的代码.请检查一下.

<?PHP echo $waktune; ?> // You can change it into seconds
var detik = <?PHP echo $waktune; ?>;
if (document.images) {
    parselimit = detik
}
function begintimer() {
    if (!document.images)
        return
    if (parselimit < 12) {
        document.getElementById("servertime").style.color = "Green";
    }
    if (parselimit == 1) {
        document.getElementById("hasil").submit();
    } else {
        parselimit -= 1 curmin = Math.floor(parselimit / 60)
            cursec = parselimit % 60
        if (curmin != 0)
            curtime = curmin + ":" + cursec + ""else
            curtime = cursec + " detik"document.getElementById("servertime").innerHTML = curtime setTimeout("begintimer()", 1000)
        }
}

解决方法:

尝试使用本地存储:

// Store
localStorage.setItem("key", "value");
// Retrieve
document.getElementById("result").innerHTML=localStorage.getItem("key"); 

更新

示例:

<head>

</head>
<body>
    <div id="divCounter"></div>
    <script type="text/javascript">
    if(localStorage.getItem("counter")){
      if(localStorage.getItem("counter") >= 10){
        var value = 0;
      }else{
        var value = localStorage.getItem("counter");
      }
    }else{
      var value = 0;
    }
    document.getElementById('divCounter').innerHTML = value;

    var counter = function (){
      if(value >= 10){
        localStorage.setItem("counter", 0);
        value = 0;
      }else{
        value = parseInt(value)+1;
        localStorage.setItem("counter", value);
      }
      document.getElementById('divCounter').innerHTML = value;
    };

    var interval = setInterval(function (){counter();}, 1000);
  </script>
</body>

javascript – 在刷新时不会重置的计时器

javascript – 在刷新时不会重置的计时器

编辑:当我调用Clock.start()时,如何传递参数,以便我可以更改totalSeconds的值?

我有一个计数器,其值与计时器显示的ID连接,因为页面上会有多行计时器,但只有一行会为每个用户运行.我想传递定时器的值,所以我知道我应该获取的定时器在哪一行,然后我将其转换为秒,然后我最终可以将该值分配给totalSeconds.那么也许我可以按照我想象的方式来实现这一点.

我已经跑过的东西:我有一个计时器,除非我刷新,否则它不会显示它正在计数.当页面加载PHP查询MysqL并使用TIMEDIFF(Now(),time_log)计算已用时间,其中time_log是计时器启动时的时间.

我想要添加的内容:我想要做的是使用下面的js / jquery片段获取我的TIMEDIFF然后将其用作totalSeconds,因此totalSeconds不会重置并继续从TIMEDIFF值开始向上计数.

var Clock = 
{
    totalSeconds: 0,

    start: function () {
        var self = this;

        this.interval = setInterval(function () {
          self.totalSeconds += 1;

          var ctr;
          $(".icon-play").each(function(){
              if( $(this).parent().hasClass('hide') )
                  ctr = ($(this).attr('id')).split('_');
          });

          $("#hour_" + ctr[1]).text(pad(Math.floor(self.totalSeconds/3600)));
          $("#min_" + ctr[1]).text(pad( Math.floor((self.totalSeconds/60)%60) ));
          $("#sec_" + ctr[1]).text(pad(parseInt(self.totalSeconds%60)));
        }, 1000);
    },

    pause: function () {
      clearInterval(this.interval);
      delete this.interval;
    },

    resume: function () {
      if (this.interval) this.start();
    }
};

对于这个剧本,信用给Speransky Danil先生. how do I pause and resume a timer?

解决方法:

您应该记录开始时间并计算从现在到启动计时器之间的秒数,而不是记录总秒数.

此外,您已经将开始时间存储在数据库中,因此您可以在页面加载时从中初始化.

如果您只计算秒数,则会缩短页面刷新之间的时间.

编辑:您可以在PHP生成的HTML输出中初始化Clock.totalSeconds.我知道你已经有这个时钟JS工作(上面没有发布标记).

<script type="text/javascript">
var Clock = {}; // your code above
Clock.totalSeconds = <?PHP echo (int)$seconds; ?>;
</script>

javascript – 如何在输入字段keyup事件上添加等待计时器?

javascript – 如何在输入字段keyup事件上添加等待计时器?

我有一个输入字段,它有一个keyup事件:
$(document).ready(function() {
    $('#SearchInputBox').keyup(function() {
        DoSearch($(this).val());
    });
});

如何添加延迟时间,以便仅当用户停止键入1秒钟时,它才会运行DoSearch功能.我不希望每次用户键入键时都继续运行它,因为如果键入速度很快,那么它就会滞后.

解决方法

基本上,在每个keyup上设置超时.如果已经有超时运行,请清除它并设置另一个超时. DoSearch()函数仅在允许超时完成而不被另一个keyup重置时运行(即,当用户停止键入1000ms时).
var timeout = null;
$('#SearchInputBox').on('keyup',function () {
    var that = this;
    if (timeout !== null) {
        clearTimeout(timeout);
    }
    timeout = setTimeout(function () {
        DoSearch($(that).val());
    },1000);
});

javascript-在JS中清除计时器问题

javascript-在JS中清除计时器问题

我有一些使用PHP动态创建的元素.我希望用户将鼠标悬停在图标和要显示的相应元素上.当鼠标离开该图标时,我希望计时器启动,然后隐藏该元素.如果鼠标进入显示的元素,我想清除计时器.当鼠标离开该元素时,我希望计时器重新启动.

我很难弄清楚这一点,也无法弄清楚为什么计时器无法清除.下面的所有jQuery都在document.ready中.

jQuery的

var $infoIcon = $('.fa-info-circle');
var $trackListing = $('track-listing');
var timer;

// Show listing on hover
$infoIcon.on('mouseenter', function(){
    $(this).next('.track-listing').fadeIn();
    clearTimeout(timer);

// Start timer when exiting the info icon
}).on('mouseleave', function(){
    timer = setTimeout(function(){
        $('.track-listing').fadeOut();
    }, 2000);
});

// Kill timer when entering listing Box
$trackListing.on('mouseenter', function(){
    clearTimeout(timer);

// Start timer when leaving listing Box    
}).on('mouseleave', function(){
    timer = setTimeout(function(){
        $('.track-listing').fadeOut();
    }, 2000);
});

如果您需要PHP,请告诉我.另外,我尝试过放置var定时器;在document.ready之外作为全局变量,我得到相同的结果.

解决方法:

如果要在页面加载后插入元素,请尝试像这样绑定它们:

$(document).on(event, '.selector', function(){});

这委托了事件.

今天关于如何使用无法在JavaScript中修改的计时器?javascript不可用怎么办的讲解已经结束,谢谢您的阅读,如果想了解更多关于javascript – 刷新浏览器时如何使倒数计时器不重置?、javascript – 在刷新时不会重置的计时器、javascript – 如何在输入字段keyup事件上添加等待计时器?、javascript-在JS中清除计时器问题的相关知识,请在本站搜索。

本文标签: