Javascript 函数无法识别初始化的变量

Javascript 函数无法识别初始化的变量,javascript,function,variables,Javascript,Function,Variables,抱歉,我没有接受过正式的Javascript培训。我正在尝试制作一个操作加载进度条的函数。我想在完成后将“donezo”类添加到#amount。但是,没有添加该类。我相信变量的初始化是正确的。使用querySelector而不是“amount”变量似乎确实有效。希望有人能向我解释为什么会这样?非常感谢 (函数移动(){ var amount=document.getElementById(“amount”); var counter=document.getElementById(“计数器”)

抱歉,我没有接受过正式的Javascript培训。我正在尝试制作一个操作加载进度条的函数。我想在完成后将“donezo”类添加到#amount。但是,没有添加该类。我相信变量的初始化是正确的。使用querySelector而不是“amount”变量似乎确实有效。希望有人能向我解释为什么会这样?非常感谢

(函数移动(){
var amount=document.getElementById(“amount”);
var counter=document.getElementById(“计数器”);
var wrapper=document.getElementById(“wrapper”);
var状态=1;
var loader=设置间隔(fireZeLoader,10);
函数fireZeLoader(){
如果(状态>=100){
清除间隔(装载机);
wrapper.innerHTML=wrapper.innerHTML+“完成”;
amount.classList.add(“donezo”);
}否则{
状态++;
amount.style.width=status+'%';
counter.innerHTML=状态+'%';
}
}
}());

发生这种情况是因为当您修改
wrapper.innerHTML
时,
wrapper
中的DOM被重新创建。也就是说,您之前得到的所有引用现在都指向不再在屏幕上的对象。您可以交换这两行:

ammount.classList.add("donezo");
wrapper.innerHTML = wrapper.innerHTML + '<div class="finished">Complete</div>';
amount.classList.add(“donezo”);
wrapper.innerHTML=wrapper.innerHTML+“完成”;

另一个选择是在不分配到
innerHTML
的情况下执行,我建议您执行后者。

谢谢!我刚刚意识到我也拼写错了“amount”,哈哈。@user5494847很高兴这有帮助。如果你认为我的答案完全回答了你的问题,请接受它()
ammount.classList.add("donezo");
wrapper.innerHTML = wrapper.innerHTML + '<div class="finished">Complete</div>';