在循环中我调用方法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();
答案 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>