【问题标题】:Javascript and Ajax - Including a calledback variable in an intervalJavascript 和 Ajax - 在区间中包含回调变量
【发布时间】:2013-06-03 01:39:09
【问题描述】:

有以下代码:

<script type="text/javascript">
var chargeup = 0;
var flag1 = "no";
var stored = <?php print $x_row['watts']; ?>; // Gets wstored (previous value) from DB.
var charge = <?php print $charge; ?> + stored;
window.onload = function chargeT1() {
timer = setInterval(function chargeT2 () {
    charge = charge+<?php print $n_gr; ?>; // $n_gr = 1; 
        if (flag1 !="no"){
            charge = chargeup;
        }
    document.getElementById('charge').innerHTML = charge;
    flag1 = "no";
}, 1000);
}
</script>

由于 $n_gr = 1,我们得到一个“计时器”,每秒加 1。

我想要达到的目标: 我想返回一个“flag1='yes';”以及来自回调函数的新“chargeup”值,该值会将变量“charge”更改为“chargeup”并继续每秒添加 +1。

例如:时刻“t”中charge的值为“100”,“t+1”中为101,“t+2”中为102,... 事件触发回调函数并返回“chargeup = 10”和“flag1=yes”,因此“charge”变为 10,并从 10 开始每秒增加 +1:t+3 为 11,t+4 为 12... p>

我不知道我做错了什么但是当回调函数返回时,例如,10 我得到的费用是 10,然后是 101,1011,10111...

这是我的回调函数:

function useHttpResponse (){
   if (http.readyState == 4) {
      if (http.status == 200) { 
      var timeWatts = http.responseXML.getElementsByTagName("upwatts")[0];
      chargeup = timeWatts.childNodes[0].nodeValue; //example: returns a value of 10
      flag1 = "yes";
      } else {
         document.getElementById('showbuy').innerHTML='<img src="anim.gif">';
             }
      }
  }

我真的被困住了。任何想法或建议都将受到欢迎。提前感谢您的宝贵时间。

【问题讨论】:

    标签: javascript ajax callback intervals


    【解决方案1】:

    看起来chargeUp 是一个字符串,所以charge 是一个字符串,而(string)charge + (int)$n_gr => string。这就是 JavaScript 弱类型遇到重载 + 时会发生的情况。

    这可以通过在某处使用数字强制来修复。将以下行之一更改为

    charge = +charge + +<?php print $n_gr; ?>;
    

    charge = +chargeup; // my recommendation
    

    (一元 + 是经过批准的 JS 成语用于 cast-to-number。)

    【讨论】:

    • 有效!非常感谢你!我为这个小问题而疯狂。这个解释帮助我理解我做错了什么。
    【解决方案2】:

    尝试改变

        charge = charge+<?php print $n_gr; ?>; // $n_gr = 1; 
    

        charge = (+charge)+(+<?php print $n_gr; ?>); // $n_gr = 1; 
    

    【讨论】:

    • 非常感谢您的回答。那正是我做错了。
    猜你喜欢
    • 1970-01-01
    • 2014-04-29
    • 2014-09-30
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多