如何通过获取Javascript来初始化变量
我试着开发游戏,通过抓取,我可以得到一些数据 我找到“重试”按钮,点击它们,我可以转到默认页面 当我尝试第二个游戏时,出现了一些错误 它可能来自某个变量如何通过获取Javascript来初始化变量,javascript,jquery,asynchronous,Javascript,Jquery,Asynchronous,我试着开发游戏,通过抓取,我可以得到一些数据 我找到“重试”按钮,点击它们,我可以转到默认页面 当我尝试第二个游戏时,出现了一些错误 它可能来自某个变量单击,而更正未初始化为“0” 申报职位有什么问题吗 如果有人有什么意见,请告诉我。对不起,下面的工作时间太长了 //const fetch=require(“节点fetch”); 变量apikey=”https://opentdb.com/api.php?amount=2&type=multiple"; $(“.btn”)。在(“单击“,”开始
单击
,而更正
未初始化为“0”
申报职位有什么问题吗
如果有人有什么意见,请告诉我。对不起,下面的工作时间太长了
//const fetch=require(“节点fetch”);
变量apikey=”https://opentdb.com/api.php?amount=2&type=multiple";
$(“.btn”)。在(“单击“,”开始“,函数()上){
让单击=0;
设correct=0;
$(“.header”).text(“正在提取…”);
$(“.content”).text(“请稍等”);
$(“.start”).hide()
取数(apikey)
.then(response=>response.json())
。然后(json=>{
显示(json,0);
$(“.btn”)。在(“单击”,“选择”,函数()上){
日志(“单击”,单击);
correct+=$(this).html()===json.results[单击]。正确答案?1:0
单击++;
控制台日志(正确);
if(单击==json.results.length){
显示结果(正确);
}否则{
显示(json,点击);
}
});
$(“.btn”)。在(“单击”,“重试”,函数()上){
console.log(“#”);
document.querySelector('.btn').innerHTML=“start”;
});
});
});
函数显示(json,单击){
const arr=[json.results[clicked]。正确答案].concat(json.results[clicked]。错误答案);
$(“.header”).text(“问题”+数字(点击+1));
$(“.category”).text(“[category]:”+json.results[clicked].category);
$(“.demobility”).text(“[demobility]:”+json.results[clicked].demobility);
$(“.content”).text(json.results[clicked].question);
设html=“”;
for(设i=0;i”;
}
document.querySelector('.btn')。innerHTML=html;
}
函数showresult(正确){
$(“.header”).text(“正确答案的数量为”+正确);
$(“.category”).hide()
$(“.demobility”).hide()
$(“.content”).text(“再次挑战”);
document.querySelector('.btn').innerHTML=“重试”;
}
函数洗牌(数组){
var currentIndex=array.length,
时间值,随机指数;
//虽然还有一些元素需要洗牌。。。
而(0!==currentIndex){
//选择剩余的元素。。。
randomIndex=Math.floor(Math.random()*currentIndex);
currentIndex-=1;
//并将其与当前元素交换。
临时值=数组[currentIndex];
数组[currentIndex]=数组[randomIndex];
数组[randomIndex]=临时值;
}
返回数组;
}
标题
欢迎
按下下面的按钮
开始
每次开始游戏时,您都要在按钮中添加另一个处理程序。因此,当您玩第二个游戏时,当您单击按钮时,处理程序将运行两次
您应该只绑定一次处理程序,而不是每次单击
您需要将一些变量移出全局变量
//const fetch=require(“节点fetch”);
变量apikey=”https://opentdb.com/api.php?amount=2&type=multiple";
让点击;
让我们改正;
让我们来看看全球的json;
$(“.btn”)。在(“单击“,”开始“,函数()上){
单击=0;
正确=0;
$(“.header”).text(“正在提取…”);
$(“.content”).text(“请稍等”);
$(“.start”).hide()
取数(apikey)
.then(response=>response.json())
。然后(json=>{
全局_json=json;
显示(json,0);
});
});
$(“.btn”)。在(“单击”,“选择”,函数()上){
日志(“单击”,单击);
correct+=$(this).html()==全局json.results[单击]。正确答案?1:0
单击++;
控制台日志(正确);
if(单击==json.results.length){
显示结果(正确);
}否则{
显示(全局_json,单击);
}
});
$(“.btn”)。在(“单击”,“重试”,函数()上){
console.log(“#”);
document.querySelector('.btn').innerHTML=“start”;
});
函数显示(json,单击){
const arr=[json.results[clicked]。正确答案].concat(json.results[clicked]。错误答案);
$(“.header”).text(“问题”+数字(点击+1));
$(“.category”).text(“[category]:”+json.results[clicked].category);
$(“.demobility”).text(“[demobility]:”+json.results[clicked].demobility);
$(“.content”).text(json.results[clicked].question);
设html=“”;
for(设i=0;i”;
}
document.querySelector('.btn')。innerHTML=html;
}
函数showresult(正确){
$(“.header”).text(“正确答案的数量为”+正确);
$(“.category”).hide()
$(“.demobility”).hide()
$(“.content”).text(“再次挑战”);
document.querySelector('.btn').innerHTML=“重试”;
}
函数洗牌(数组){
var currentIndex=array.length,
时间值,随机指数;
//虽然还有一些元素需要洗牌。。。
而(0!==currentIndex){
//选择剩余的元素。。。
randomIndex=Math.floor(Math.random()*currentIndex);
currentIndex-=1;
//并将其与当前元素交换。
临时值=数组[currentIndex];
数组[currentIndex]=数组[randomIndex];
数组[randomIndex]=临时值;
}
返回数组;
}
标题
欢迎
按下下面的按钮
开始
谢谢您的回答。我想了解为什么每次游戏开始时都要点击两次处理程序绑定。这个问题的直接原因是什么?感谢您每次调用.on()
时添加的单击处理程序。它们不会相互替换。每次单击.start
按钮时,您都在调用.on()
。