更新方法调用中的变量

时间:2013-10-30 20:23:14

标签: javascript

在循环中我调用方法bullet.fire();在这个方法中我有这个.i ++,唯一的麻烦是this.i不会在每次迭代时更新,任何想法为什么?

function projectile(){
    this.i = 20;
}

projectile.prototype.fire = function(){
    this.i++;
    //shows value of this.i in a div
    document.getElementById("info").innerHTML = this.i;
}
循环中的

if(typeof(bullet) == "undefined"){
    var bullet = new projectile(1);
}

bullet.fire();

1 个答案:

答案 0 :(得分:2)

它开火了!

由于两个原因,您没有看到进度。首先,没有延迟,所以它会瞬间发生。其次,javascript在一个同步线程中工作。在线程完成之前,不会刷新接口(HTML)。

您可以使用JavaScripts异步执行方法之一来中断该线程。 setInterval表示实例:

<div id="info"></div>
<script type="text/javascript">
function projectile(){
    this.i = 20;
}

projectile.prototype.fire = function(){
    this.i++;
    //shows value of this.i in a div
    document.getElementById("info").innerHTML = this.i;
}

var i = 3, bullet = new projectile(1), timer;

timer = setInterval(function () { 
    bullet.fire();
    if (--i <= 0) clearInterval(timer);
}, 300);
</script>

In action on fiddle