javascript - jquery 的数字增量

标签 javascript jquery

我如何使用下面的代码来显示变量增量而不影响彼此,我尝试使用同一页面上的脚本来显示随着时间的推移而增加的不同值,但我在 div1 和 div2 中得到相同的值,即使它们有不同的值var,当我在单独的页面上使用它们时,下面的代码工作正常,但是当我将它们放在同一页面上时,两个 div 都会得到相同的结果。

我需要帮助才能使它们正常工作而不影响彼此或任何其他替代方案

我需要真正有效的代码,而不仅仅是解释

<script>
    var START_DATE = new Date("May 10, 2010 22:30:00");
    var INTERVAL = 8;
    var INCREMENT = 60;
    var START_VALUE = 250;
    var count = 0;
    $(document).ready(function() {
     var msInterval = INTERVAL * 1000;
     var now = new Date();
     count = parseInt((now - START_DATE)/msInterval) * INCREMENT + START_VALUE;
     $('#div1').html(count.toFixed(0));
     window.setInterval( function(){
        count1 += INCREMENT; 
        $('#div1').html(count.toFixed(0));
     }, msInterval);
    });
    </script>

  <script>
    var START_DATE = new Date("March 10, 2010 22:30:00");
    var INTERVAL = 10;
    var INCREMENT = 10;
    var START_VALUE = 350;
    var count = 0;
    $(document).ready(function() {
     var msInterval = INTERVAL * 1000;
     var now = new Date();
     count = parseInt((now - START_DATE)/msInterval) * INCREMENT + START_VALUE;
     $('#div2').html(count.toFixed(0));
     window.setInterval( function(){
        count1 += INCREMENT; 
        $('#div2').html(count.toFixed(0));
     }, msInterval);
    });
    </script>

最佳答案

虽然 dzylich 的答案是正确的,但以下是对正在发生的事情的更彻底的解释:

Javascript 有一个全局作用域,不了解模块或命名空间。在 script 标记的顶部范围中声明的任何 var 都位于全局命名空间中,因此您的代码运行就像您编写的一样:

var count1 = whatever;
//do some stuff
var count1 = whatever; //count1 redeclared!

在同一个脚本中。避免此问题的一种常见方法是将每段代码包装在 Immediately Invoked Function Expression 中。 (IIFE) 为每个脚本标签创建一个范围:

<script>
  (function() {
      var counter1 = whatever;
      //do stuff to counter1
  })();
</script>

<script>
  (function() {
     var counter1 = whatever; //different than the other counter1, exp follows
     //do whatever
  })();
</script>

因为每个代码块都包装在一个函数中(这为该函数中定义的 var 创建了一个新的作用域),所以两个“counter1”实际上是不同的变量。请注意,除非您显式返回它们,否则您无法访问一个 IIFE 包装 block 中的内容,请参阅 revealing module pattern .

关于javascript - jquery 的数字增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33201046/

相关文章:

javascript - 动画类切换/元素交换

php - 如果选中则动态更新,如果未选中则更新 cek=1 或 cek=0

jquery - Django AJAX 加载更多分页与分组

javascript - 焦点上的 Textarea 变成一个 DIV,单击该 div 时它会返回到 textarea?查询

javascript - 绑定(bind) .click 和 .blur 事件处理程序

jquery 点击不使用 css 'position :fixed' 属性

javascript - 如何使用 javascript 获取输入复选框 id 值?

javascript - lodash 不 trim 结束和开始

javascript - Javascript 中的日期变量问题

javascript - 使用ajax成功函数中的json对象(使用angularjs)