为什么.size()不能像我认为的那样工作?

时间:2014-09-07 17:06:45

标签: javascript jquery html css

以下是一些代码,负责更改residentadvisor.net上轮播中的图片。点击'右键'箭头,图片发生变化,点导航向右移动,点击左边的'箭头,图片发生变化,向左移动。如果您在点导航系列的开头并单击左侧,则会结束,否则显示的图片将由您点击的任何点的data属性确定。

n.attr("id") == "right" ? currentIndex == $("#slider li").size() - 
    1? currentIndex = 0 : currentIndex++ : n.attr("id") ==
    "left" ? currentIndex == 0 ? currentIndex = $("#slider li")
    .size() - 1 : currentIndex-- : currentIndex = n.attr("data-position");

我无法解决的问题是这段代码:currentIndex == $("#slider li").size() - 1?

如果滑块的currentIndex位于列表的末尾,则突出显示的点导航将返回到索引位置0,但为什么通过检查大小来确定这一点,然后然后< / em>减去1?检查currentIndex是否等于.size()的结果是否有意义?但是,当我删除-1点导航时,将在页面上消失,无论该间隔指定多长时间,再次显示在poisition 0之前。如果我将其更改为-2,则点击导航会在第二个到最后一个点停止,然后再循环回来。用.size()替换.length会做同样的事情。

为什么 -1的原因已被回答,但为什么.size().length不能按照我认为应该的方式运作?

1 个答案:

答案 0 :(得分:2)

jQuery .size().length不是基于零的,因为它们计算列表中的元素数量。很自然地,计数将从1开始.InfinIndex是一个基于零的索引,可能是因为它是数组中的索引。在一个项目数组中,零将是第一个索引/节点,length-1将是最后一个索引/节点。

例如,对于后代:数组中的10个项目看起来像这样:

item[0]
...
item[9]

虽然数组的大小(或长度)是10,但数组索引的范围是0到9。

我不确定这是不是你问的问题,但似乎确实如此。