Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用函数每秒增加一个变量值?_Javascript - Fatal编程技术网

Javascript 如何使用函数每秒增加一个变量值?

Javascript 如何使用函数每秒增加一个变量值?,javascript,Javascript,我试着每秒钟增加一个变量。我应该在函数autoClicker中包含什么,以便变量clicks每秒增加1?另外,如果代码中还有任何问题,你能告诉我吗?抱歉,如果这个问题看起来很基本,我对JavaScript还是很陌生的 //我们试图增加的变量 var=0; var升级1=1; 函数getClicks(){ 点击次数+=升级1; document.getElementById(“clicks”).innerHTML=clicks; }; 函数buyAutoClicker(){ 如果(单击次数>=50

我试着每秒钟增加一个变量。我应该在函数autoClicker中包含什么,以便变量clicks每秒增加1?另外,如果代码中还有任何问题,你能告诉我吗?抱歉,如果这个问题看起来很基本,我对JavaScript还是很陌生的

//我们试图增加的变量
var=0;
var升级1=1;
函数getClicks(){
点击次数+=升级1;
document.getElementById(“clicks”).innerHTML=clicks;
};
函数buyAutoClicker(){
如果(单击次数>=50){
点击次数-=50次
自动舔片机()
}否则{
alert=“对不起,您没有足够的点击次数购买此”;
}
}
//我将使用该函数来增加点击次数
函数autoClicker(){}
//我们试图增加的变量
var=0;
var升级1=1;
函数getClicks(){
点击次数+=升级1;
document.getElementById(“clicks”).innerHTML=clicks;
};
函数buyAutoClicker(){
如果(单击次数>=50){
点击次数-=50次
自动舔片机()
}否则{
alert=“对不起,您没有足够的点击次数购买此”;
}
}
//我将使用该函数来增加点击次数

setInterval(函数(){clicks++;console.log(clicks);},1000)可能有几件事可以改进此代码

  • 使用textContent比使用innerHTML更可取,它检查文本中是否没有html标记
  • 然后使用像()=>{}这样的内联函数更有用,但是在这个程序中没有什么区别,在面向对象的上下文中使用它可以有几种方法
  • 您不需要document.getElementById,只需使用id即可。 最后(这只是一个随机的提示,与很多事情无关),你可以考虑无分支编程,因为IFS很昂贵。
但无论如何,你应该玩得开心:)

var点击次数=0;
var升级1=1;
函数getClicks(){
clk.textContent=(单击+=升级1);
};
函数buyAutoClicker(){
如果(单击次数>=50){
点击次数-=50次
setInterval(()=>{getClicks();},1000);
}否则{
警告(“对不起,您没有足够的点击次数来购买此邮件”);
}
}
clk.onclick=()=>{getClicks();};
b、 onclick=()=>{buyAutoClicker();}
html,正文{高度:100%;宽度:100%;边距:0;}
p{高度:50px;宽度:50px;背景:红色;}


您可以创建一个具有启动、暂停和广告更新功能的
自动点击器
类。它将负责管理
setInterval
id

编辑:我将其更新为包含升级按钮,现在可以手动单击
目标

const升级=[{
费用:50美元,
费率:2
}, {
费用:100美元,
费率:4
}];
常量main=()=>{
const target=document.querySelector('.autoclicker');
const span=document.querySelector('.info>span');
const btn=document.querySelector('.btn toggle');
常量点击器=新的自动点击器(目标,1000次,(点击)=>{
span.textContent=点击次数;
}).start();
初始化升级(点击、升级);
btn.addEventListener('单击',(e)=>{
e、 target.textContent=clicker.isRunning()?“开始”:“暂停”;
clicker.toggle();
});
};
const initializeUpgrades=(点击器,升级)=>{
const upgradeContainer=document.querySelector('.upgrades');
升级。forEach(升级=>{
const btn=document.createElement('button');
btn.textContent=upgrade.cost;
btn.value=upgrade.rate;
btn.addEventListener('单击',(e)=>{
让成本=parseInt(e.target.textContent,10);
让value=parseInt(即target.value,10);
如果(clicker.clicks>=成本){
clicker.clicks-=成本;
clicker.step=值
}否则{
log(`无法负担${value}click升级,它需要${cost}clicks`);
}
});
upgradeContainer.appendChild(btn);
});
};
类自动剪辑器{
构造函数(目标、速率、回调){
如果(目标类型=='string'){
target=document.querySelector(目标);
}
this.target=目标;
这个比率=比率;
this.callback=回调;
this.init();
}
init(){
这个步骤=1;
这个值=0;
这是。_loopId=null;
this.target.addEventListener('click',(e)=>{
这个.update();
});
}
isRunning(){
返回此。\u loopId!=null;
}
切换(){
this.isRunning()?this.pause():this.start();
}
更新(){
this.clicks+=this.step;
if(this.callback){
this.callback(this.clicks);
}
}
开始(){
this.update();//立即更新
这个._loopId=setInterval(()=>this.update(),this.rate);
归还这个;
}
暂停(){
clearInterval(此.\u loopId);
这是。_loopId=null;
归还这个;
}
}
main()
.wrapper{
宽度:10em;
文本对齐:居中;
边框:薄实灰色;
填充:0.5em;
}
.自动点击器{
宽度:4em;
高度:4em;
背景:#F00;
边界:无;
边界半径:2米;
}
.自动点击器:聚焦{
大纲:无;
}
.自动点击器:悬停{
背景#F44;
光标:指针;
}
.info{
利润率:1米0;
}
.升级{
显示:内联块;
}
.升级按钮{
右边距:0.25em;
}

点击:
暂停
用于按指定的间隔运行函数。这将每隔1000毫秒(每秒)运行
increaseClicks

函数递增点击次数(){
点击++;
}
var interval=setInterval(增加点击次数,1000次);
用于停止运行它:

clearInterval(间隔);
如果不想使用
clearInterval
,可以省略
var interval=

setInterval(增加点击次数,1000次);

您是否签出了
setInterval
setTimeout
?您可以使用
setInterval