Javascript 点击按钮不执行功能
我试着点击btn3(kashef),但它并没有触发我的功能 卡舍夫() 我的代码在这里:Javascript 点击按钮不执行功能,javascript,html,Javascript,Html,我试着点击btn3(kashef),但它并没有触发我的功能 卡舍夫() 我的代码在这里: 我需要通过点击按钮kashef,我的运行计数器(它是一个 货币计数器)将减去300美元(点击成本) 获取该功能)例如:如果货币滚轴上的金额为1000美元 点击“kashef”按钮事件的瞬间,货币计数器减少 设置为700美元并继续运行,直到下一次单击 代码如下: let start; const el = document.getElementById('count');
let start;
const el = document.getElementById('count');
const final = parseInt(el.textContent, 10);
const duration = 100000;
const kashefButton= document.getElementById("btn3");
kashefButton.addEventListener("click", kashef);
function kashef(){
document.getElementById('count').innerHTML=1000-300;
}
const step = ts => {
if (!start) {
start = ts;
}
let progress = (ts - start) / duration;
el.textContent = Math.floor(progress * final) * 100 ;
time = +el.textContent;
if( progress < 1){
requestAnimationFrame(step);
}
var btn1 = document.getElementById('btn1');
var btn2 = document.getElementById('btn2');
var btn3 = document.getElementById('btn3');
const OpentButtons = 200;
if (time <= OpentButtons) {
btn1.disabled = true;
btn2.disabled = true;
btn3.disabled = true;
} else {
btn1.disabled = false;
btn2.disabled = false;
btn3.disabled = false;
}
}
requestAnimationFrame(step);
让我们开始;
const el=document.getElementById('count');
const final=parseInt(el.textContent,10);
常数持续时间=100000;
const kashefButton=document.getElementById(“btn3”);
kashefButton.addEventListener(“单击”,kashef);
函数kashef(){
document.getElementById('count')。innerHTML=1000-300;
}
常数步长=ts=>{
如果(!开始){
开始=ts;
}
让进度=(ts-开始)/持续时间;
el.textContent=数学地板(进度*最终)*100;
时间=+el.textContent;
如果(进度<1){
请求动画帧(步骤);
}
var btn1=document.getElementById('btn1');
var btn2=document.getElementById('btn2');
var btn3=document.getElementById('btn3');
const OpentButtons=200;
if(time这是一个范围问题。kashdef的定义没有定义在事件侦听器可以找到它的范围内。将kashef的定义移到ts块之外(就在“const duration=100001;”之后),它就可以工作(在您的小提琴中验证).另一个想法是为事件处理程序使用一个内嵌函数。它确实使代码更难阅读,但避免了范围界定问题,特别是当您将此项目作为更大项目的一部分时:``kashefButton.addEventListener(“单击”,函数(){})“``伟大的大卫!!!感谢它为我在函数定义上的错误起到了作用。不过,请单击kashef按钮,不要从滚动计数器中减去。有什么建议吗?滚动计数器总是设置为当前时间戳的值和开始值(让进程…el.textcontent),覆盖您在按钮单击处理程序中所做的任何更改。您可能希望在按钮更改时更改start的值,而不是更改innerHTML以使其工作。您的意思是??const kashefButton=document.getElementById(“btn3”);kashefButton.addEventListener(“click”,kashef);function kashef(){start=200}