道歉,我没有正式的Javascript培训。我正在尝试创建一个操作加载进度条的函数。我想在完成后将“donezo”类添加到#ammount。但是,该课程没有被添加。我相信变量是正确初始化的。执行querySelector而不是“ammount”var似乎确实有效。希望有人可以解释为什么这是我的情况?非常感谢。
(function move() {
var ammount = document.getElementById("ammount");
var counter = document.getElementById("counter");
var wrapper = document.getElementById("wrapper");
var status = 1;
var loader = setInterval(fireZeLoader, 10);
function fireZeLoader() {
if (status >= 100) {
clearInterval(loader);
wrapper.innerHTML = wrapper.innerHTML + '<div class="finished">Complete</div>';
ammount.classList.add("donezo");
} else {
status++;
ammount.style.width = status + '%';
counter.innerHTML = status + '%';
}
}
}());
答案 0 :(得分:2)
这是因为当您修改wrapper.innerHTML
时,会重新创建wrapper
内的DOM。也就是说,您之前获得的所有引用现在都指向不再出现在屏幕上的对象。你可以交换这两行:
ammount.classList.add("donezo");
wrapper.innerHTML = wrapper.innerHTML + '<div class="finished">Complete</div>';
另一种选择是carefully modify DOM而不指定innerHTML
,我建议你选择后者。