1

在一个循环中,我正在调用方法 bullet.fire(); 在这种方法中,我有 this.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();
4

1 回答 1

2

会火!

你看不到进展有两个原因。首先,没有延迟,所以它会立即发生。其次,javascript 在一个同步线程中工作。在线程完成之前,不会刷新界面 (HTML)。

您可以使用其中一种 JavaScript 异步执行方法来中断线程。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>

在小提琴上行动

于 2013-10-30T20:32:58.120 回答