首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算ad偏移后的滑动指数

计算ad偏移后的滑动指数
EN

Stack Overflow用户
提问于 2015-09-17 18:04:52
回答 2查看 34关注 0票数 1

我已经安装了一个简单的JS库来实现“深度链接”,允许一个具有像#slide-3这样的散列的URL自动加载第三个幻灯片活动库。画廊里每七张幻灯片就有一条广告。这些广告幻灯片不被跟踪,因此散列变成#slide-x,然后是图像幻灯片,即#slide-7。]

我创建了一个帮助函数,将幻灯片号从散列转换为0索引的幻灯片编号,每七张幻灯片都考虑到这些广告,但我很好奇是否有人能想到一种更优雅的方法来计算适当的索引,因为我的实现在我看来太复杂了:

代码语言:javascript
复制
var slideNum = parseInt( window.location.hash.replace( '#slide-', '' ), 10 );
slideNum += Math.floor( ( slideNum + Math.floor( slideNum / 7 ) ) / 7 ) - 1;
return slideNum;

这是可行的,但有两层楼似乎太过分了。一定有更简单的方法!但是,我不确定控制地板操作的代数规则,所以我不知道如何扩展/简化自己。任何帮助都将不胜感激。

我已经包含了一个基本的JS小提琴,它输出了前36张幻灯片的值,并将其与正确的值进行了比较。请随时使用您的解决方案更改testFunc,并查看是否有效!

代码语言:javascript
复制
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] + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + correct[i] + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + testFunc( nums[i] ) + '<br/>';
    if ( ( i + 1 ) % 6 === 0 ) {
         document.getElementById('text').innerHTML += 'AD<br/>';
    }
}
代码语言:javascript
复制
<div id="text"></div>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-17 18:52:59

是的,一个整数除法就足够了:

代码语言:javascript
复制
var testFunc = function( n ) {
    n = n - 1;
    return Math.floor(n / 6) + n
};
票数 1
EN

Stack Overflow用户

发布于 2015-09-17 18:17:37

意识到我们在每个幻灯片元素上都有两个索引,所以我可以简单地使用URL索引进行选择,并从DOM中获得真正的幻灯片索引。也许还是个有趣的问题!?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32637097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档