javascript - 增加变量

标签 javascript jquery

我正在尝试使用下面的 JavaScript 来显示设定时间范围内的数字增量。我遇到的问题是,我尝试在两种不同的情况下使用它们,并发送不同的值,但它们通过显示相同的值而相互冲突。我怎样才能在不同的情况下使用它们而不互相冲突。请参阅下面的代码:

<script>
var START_DATE = new Date("January 10, 2012 22:30:00"); // put in the starting date here
var INTERVAL = 8; // refresh interval in seconds
var INCREMENT = 6;  // increase per tick
var START_VALUE = 25; // initial value when it's the start date
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(){
    count += INCREMENT; 
    $('#div1').html(count.toFixed(0));
 }, msInterval);
});
</script>
<div id="div1"></div>

<script>
var START_DATE = new Date("January 10, 2012 22:30:00"); // put in the starting date here
var INTERVAL = 14; // refresh interval in seconds
var INCREMENT = 5;  // increase per tick
var START_VALUE = 15000; // initial value when it's the start date
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(){
    count += INCREMENT; 
    $('#div2').html(count.toFixed(0));
 }, msInterval);
});
</script>
<div id="div2"></div>

它们旨在根据设置值显示不同的输出,但它们显示相同的值

我将非常感谢带有示例的完整解释。

最佳答案

当你写下:

<script>
   var count = 0;
</script>

您真正要做的是将计数添加为窗口对象的属性,如下所示:

<script>
   var window.count = 0;
</script>

因此,当您将这两个脚本嵌入到同一页面时,count 变量实际上指向两个脚本中 window 对象的完全相同的属性。

您可以设置自己的具有两个计数器属性的计数器对象。就像这样:

<script>

    var START_DATE = new Date("January 10, 2012 22:30:00"); // put in the starting date here
    var INTERVAL = 8; // refresh interval in seconds
    var INCREMENT = 6;  // increase per tick
    var START_VALUE = 25; // initial value when it's the start date
    var countersObj = {};
    countersObj.counter1 = 0;

    $(document).ready(function() {

      var msInterval = INTERVAL * 1000;
      var now = new Date();

      countersObj.counter1 = parseInt((now - START_DATE)/msInterval) * INCREMENT + START_VALUE;
      $('#div1').html(countersObj.counter1.toFixed(0));

      window.setInterval(function() {

        countersObj.counter1 += INCREMENT; 
        $('#div1').html(countersObj.counter1.toFixed(0));
      }, msInterval);

    });

</script>
<div id="div1"></div>

<script>

    var START_DATE = new Date("January 10, 2012 22:30:00"); // put in the starting date here
    var INTERVAL = 14; // refresh interval in seconds
    var INCREMENT = 5;  // increase per tick
    var START_VALUE = 15000; // initial value when it's the start date

    $(document).ready(function() {

      var msInterval = INTERVAL * 1000;
      var now = new Date();

      countersObj.counter2 = parseInt((now - START_DATE)/msInterval) * INCREMENT + START_VALUE;
      $('#div2').html(countersObj.counter2.toFixed(0));

      window.setInterval(function() {

        countersObj.counter2 += INCREMENT; 
        $('#div2').html(countersObj.counter2.toFixed(0));
      }, msInterval);
    });

</script>
<div id="div2"></div>

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

相关文章:

javascript - "You may need an appropriate loader to handle this file type"与 Webpack 和 Babel

javascript - 单击另一个子菜单时如何关闭一个子菜单

javascript - Jquery:我们可以在 css 属性中使用变量吗?

javascript - 文件上传 插入 url 图片

javascript - DOM 更改后刷新菜单

javascript - 如何在 chokidar 中仅获取文件名而不是完整路径

javascript - 根据下拉列表中的选定选项选择要隐藏/显示的字段(编辑时)

javascript - Puppeteer:异步函数中的圆括号是什么意思?

javascript - 使用 Plone 添加/编辑弹出窗口

jquery - jsTree 上下文菜单翻译