0
我有以下的循环,我想优化:如何优化取模功能?
var items = document.querySelectorAll('.mover');
for (var i = 0; i < items.length; i++) {
var phase = Math.sin((document.body.scrollTop/1250) + (i % 5));
items[i].style.left = items[i].basicLeft + 100 * phase + 'px';
}
当我控制台登录相输出。 console.log(phase)
我意识到,我得到了相同的5个号码。
例如: 比方说items.length = 200
。 这些是阶段的结果。
i = 0 phase = 0
i = 1 phase = 0.84147
i = 2 phase = 0.90929
i = 3 phase = 0.14112
i = 4 phase = -0.75680
i = 5 phase = 0
i = 6 phase = 0.84147
i = 7 phase = 0.90929
i = 8 phase = 0.14112
i = 9 phase = -0.75680
i = 10 phase = 0
i = 11 phase = 0.84147
i = 12 phase = 0.90929
i = 13 phase = 0.14112
i = 14 phase = -0.75680
等
我想借此行
var phase = Math.sin(var scrollTop = document.body.scrollTop/1250; + (i % 5));
出来的for循环,但我无法弄清楚如何通过正确的相位数回圈。
所以我只是想计算我的< 5阶段,因为它之后重复。如何使它相对应,以便当for循环处于i = 25时,循环获得正确的相位(在这种情况下,它将为0)。
有[没什么优化]在该代码(https://en.wikipedia.org/wiki/Premature_optimisation)。就这样离开吧。 – Bergi
a)使用嵌套循环(一个从0到5,一个在增量为5的元素上)b)使用大小为5的数组来记忆值 – Bergi