滚动时的Javascript If/Else paradox设置值

滚动时的Javascript If/Else paradox设置值,javascript,if-statement,Javascript,If Statement,我试图设置一个值,同时滚动,如果有东西是真的。问题是,我循环了几个元素,如果在一个元素中为真,那么在另一个元素中为假。因此,除非在循环的最后一个元素中为true,否则永远不会设置true 所以我检查元素从起点到终点的进度。如果进度大于0且小于1,我希望将暂停值设置为true,否则将其设置为false。但是循环中的下一个元素会覆盖它 const updateSections = () => { queues.forEach(s => { const { el, start,

我试图设置一个值,同时滚动,如果有东西是真的。问题是,我循环了几个元素,如果在一个元素中为真,那么在另一个元素中为假。因此,除非在循环的最后一个元素中为true,否则永远不会设置true

所以我检查元素从起点到终点的进度。如果进度大于0且小于1,我希望将暂停值设置为true,否则将其设置为false。但是循环中的下一个元素会覆盖它

const updateSections = () => {
  queues.forEach(s => {
    const { el, start, diff } = s;
    const progress = getProgress(start, diff);
    paused = progress > 0 && progress < 1 ? true : false;
  });
};
值:False
向下滚动

页脚
通常,您应该在
.forEach
外部将
暂停
设置为
错误
,然后在循环中根据当前值设置:

const updateSections = () => {
  paused = false;
  queues.forEach(s => {
    const { el, start, diff } = s;
    const progress = getProgress(start, diff);
    paused = paused || progress > 0 && progress < 1;
  });
  display.innerHTML = paused ? 'True' : 'False';
};
constupdatesections=()=>{
暂停=错误;
队列。forEach(s=>{
常数{el,start,diff}=s;
const progress=getProgress(开始,差异);
暂停=暂停| |进度>0&&进度<1;
});
display.innerHTML=暂停?'True':'False';
};
这样,如果它已经暂停,即使后续队列仍在进行中,它也将保持暂停状态


请注意,您永远不需要任何形式的
booleanstest?true:false
因为测试本身已经返回
true
false
。如果您想从基于JavaScript“真实性”的测试中获得布尔值,可以使用
!!非布尔测试

您所说的进度区是滚动区域的可见部分吗?@nixkuroi本例中的进度区是当元素到达元素高度的顶部时,但在我的实际代码中,进度区可能会大不相同。但我将从一开始到结束跟踪这些价值观的进展。