我希望变量每秒更新为Math.floor(jeans + jps)
的值,其中jeans
是牛仔裤的数量,jps
是每秒生产的牛仔裤数量。
以下是我的脚本中的代码段:
setInterval(function() {
var prefloor = (jeans + jps);
jeans = Math.floor(prefloor);
}, 1000);
但是,这不会改变jeans
的值。但以下确实改变了它:
setInterval(function() {
var prefloor = (jeans + jps);
jeans = prefloor;
}, 1000);
我做错了什么?
答案 0 :(得分:1)
问题是你的delta值(jps)如果是< = 1则会被归为0。因此,牛仔裤的值会改变0,因此保持不变。
这是一个JSFiddle,当jsp> = 1时,牛仔裤的价值会发生变化:
它适用于此值,但十进制值将向下舍入,从而导致一些不一致。
要获得您可能正在寻找的行为,您要做的就是制作一个精确的变量(不是四舍五入),然后在显示时将该值置于最低值。
例如:
var jeans=0;
var jps=0;
element.onclick=function(){jps+=0.2}
setInterval(function(){
jeans+=jps;
document.getElementById("jcount").innerHTML=Math.floor(jeans); //use Math.floor only for display
},1000)
答案 1 :(得分:0)
你的裁缝变量在第15行设置为0.在第19行,你写
jps = (tailors*0.2);
等于jps =(0 * 0.2)并且获得裁缝++的唯一方法是购买东西,然而需要至少20,这将永远不会发生。设置尾标= 1,您的计数将开始。
(它还不是一个有效的答案,因为计数不是它应该是什么样子(没有被覆盖)但是我不能写50条代表而没有代表。抱歉)