1

具有以下代码:

<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>

我们得到一个“计时器”,它每秒增加 +1,因为 $n_gr = 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...

我不知道我做错了什么,但是当回调函数返回时,例如,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">';
             }
      }
  }

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

4

2 回答 2

1

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

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

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

或者

charge = +chargeup; // my recommendation

(一元+是被批准的用于转换为数字的 JS 习语。)

于 2013-06-03T02:01:41.813 回答
0

尝试改变

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

    charge = (+charge)+(+<?php print $n_gr; ?>); // $n_gr = 1; 
于 2013-06-03T01:54:36.463 回答