Я подстроил простую JS-галерею, чтобы реализовать «глубокую привязку», позволяющую URL-адрес с хешем, например #slide-3
, автоматически загружать галерею с активным третьим слайдом. В галерее есть каждый седьмой слайд. Эти рекламные слайды не отслеживаются, поэтому хэш становится #slide-x
, за которым следует слайд изображения, то есть #slide-7
.]Расчет индекса скольжения после смещения объявления
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 во внимание эти объявления каждый седьмой слайд, но было интересно, если кто-то мог придумать более изящный способ, чтобы вычислить правильный индекс, как моя реализация выглядит слишком сложно, на мой взгляд:
var slideNum = parseInt(window.location.hash.replace('#slide-', ''), 10);
slideNum += Math.floor((slideNum + Math.floor(slideNum/7))/7) - 1;
return slideNum;
Это работает, но имеет два этажа, кажется подобный overkill. Должен быть более простой способ! Я не уверен в алгебраических правилах, которые управляют работой пола, но я не могу понять, как расширить/упростить себя. Любая помощь будет оценена по достоинству.
Я включил основную скрипту JS, которая выводит значения для первых 36 слайдов по сравнению с их собственными значениями. Не стесняйтесь изменять testFunc
с вашим решением и посмотреть, работает ли он!
var nums = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36];
var correct = [0,1,2,3,4,5,7,8,9,10,11,12,14,15,16,17,18,19,21,22,23,24,25,26,28,29,30,31,32,33,35,36,37,38,39,40];
var testFunc = function(n) {
var offset = (n + Math.floor(n/7))/7;
return n + Math.floor(offset) - 1;
};
document.getElementById('text').innerHTML += 'Input Expected Output<br/>';
for(var i = 0; i < nums.length; i++) {
document.getElementById('text').innerHTML += nums[i] + ' ' + correct[i] + ' ' + testFunc(nums[i]) + '<br/>';
if ((i + 1) % 6 === 0) {
document.getElementById('text').innerHTML += 'AD<br/>';
}
}
<div id="text"></div>
D'о, конечно! По какой-то причине массивный мозговой пердит. Меня отбросило 7 или 6 штук. Благодаря! – Primus202