javascript - 获取for循环中的前一个元素

标签 javascript for-loop

编辑2(使问题更容易理解)

我试图实现的效果如下:每次元素进入视口(viewport)时,都会向其中添加“is-visible”类,并从前一个元素中删除相同的“is-visible”类。

现在我已经成功使其工作,但在添加 is-visible 之前,我运行了 for 循环来删除所有 is-visible 类code> 类到视口(viewport)中的元素。

它可以工作,但就性能而言,我认为最好从 element[i -1] 中删除该类。这是我无法让它工作的。

这是我尝试使 element[i-1] 解决方案工作的简化 fiddle :https://jsfiddle.net/epigeyre/vm36fpuo/11/ .

<小时/>

编辑1(回答一些提出的问题)

我通过使用模运算符 ((i+len-1)%len) 纠正了 @Catalin Iancu 提出的问题(非常感谢您的宝贵帮助)。

<小时/>

原始问题(不太清楚)

我试图使用以下代码获取 for 循环中的前一个元素(以更改其类):

for (var i = 0; i < array.length; i++) {
    if(array[i-1] && my other conditions) {
        array[i-1].classList.remove('is-visible');
        array[i].classList.add('is-visible');
    }
}

但它并没有删除 [i-1] 元素的类。

这是我的模块的一段更完整的代码(它在 scroll 事件监听器中运行):

var services = document.getElementsByClassName('services'),
    contRect = servicesContainer.getBoundingClientRect();

for (var i = 0; i < services.length; i++) {
    var serviceRect = services[i].getBoundingClientRect();

    if ( !services[i].classList.contains('active') && Math.round(serviceRect.left) < contRect.right && services[i-1]) {
        services[i-1].classList.remove('is-visible');
        services[i].classList.add('is-visible');
    }
}

感谢您的帮助!

最佳答案

您的 if(array[i-1] && my other criteria) 始终为真,除了第一种情况 array[-1] 不为真存在。因此,它将删除然后添加每个元素的 active 类,这将使其看起来好像只删除了第一个元素的类。

当不再需要循环时,您需要的是更好的 if 条件或 break 语句

for (var i = 0; i < array.length; i++) {
    if(array[i] && i != array.length - 1) {
        array[i].classList.remove('active');
    }
}
array[array.length - 1].classList.add('active');

关于javascript - 获取for循环中的前一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46451174/

相关文章:

javascript - 如何让 iPad 上传图片?

javascript - pagebeforehide 事件仅针对 "inner"页面转换而触发

java - Main() 中的 while 和 if 循环希望我删除其下面的代码?

javascript - 如果没有选择复选框则跳出 for 循环

ios - cellForRowAtIndexPath 未被调用但 numbersOfRowInSection 是

java - 计算字符串的长度和 "padding"it

javascript - 表单的无效 eventListener

javascript - js 异步/等待返回 promise

javascript - 来自给定选择器的 nodeList 的 Jasmine 测试事件监听器函数

vba - VBA-错误时如何进入下一个迭代循环