当前位置: 首页 > 知识库问答 >
问题:

Jquery/JS:从同级跳过N项。保留密钥后出错

彭英逸
2023-03-14

当我在类div中有一个div列表时。

<div class="list-group games">
   <div>item</div>
    <div>item</div>
    <div>item</div>
    <div>item</div>
    <div class="active">item</div>
    <div>item</div>
    <div>item</div>
</div>

这是一个包含700个项目的很长的列表,我想使用page down/up按钮和上下移动1个项目的箭头键轻松导航。

它们的功能是移动单个项目,工作正常。pgdown/up功能在按下它时也可以工作,其间有一个小停顿。当我按住pgdown/up按钮时,它在执行该函数约10次后开始给我以下错误。

我使用的函数

function pgDown(e){
                e.preventDefault();
                var currentItem = $(".active");
                var itemCount = $(".games").children().length;
                nextItem = currentItem.prevAll().size() - 10;
                if (nextItem < itemCount){
                    currentItem.removeClass('active');
                    currentItem = $(".games div:nth-child("+ nextItem +")").addClass('active');
                    animatedScrollTo(
                        document.body,
                        ($(".active").offset().top) - ($(window).height()/2), 
                        0
                    );
                }
            }

错误:

Uncaught TypeError: Cannot read property 'top' of undefined

它来自函数中的一行代码

($(".active").offset().top) - ($(window).height()/2), 

有人知道如何防止这种情况发生吗?

如果有实现这一目标的另一种方法,那么我很乐意实施它。

共有1个答案

梁丘亦
2023-03-14

似乎在某个点上,没有包含“active”类的元素,或者它是隐藏的。你应该调查一下。但是,这样可以防止发生错误:

var activeOffset = $(".active").offset();

if(activeOffset) {
    animatedScrollTo(
      document.body,
      (activeOffset.top) - ($(window).height()/2), 
      0
   ); 
}
 类似资料:
  • 任务:凯撒算法(密码(c))通过按密钥(k)位置“旋转”每个字母来加密消息。 实现:ci=(pi k)mod26,其中ci是密码,pi是明文,k是密钥。 我的伪代码: 从命令行参数获取密钥 将键(k)转换为整数 提示用户输入纯文本(pi) 对于每个纯文本字符,保留大小写(使用C中的isalpha、isupper和islower函数)。 最后,按键移动明文字符,例如“回家!”——“Hp Ipnf!”

  • 本文向大家介绍实现js保留小数点后N位的代码,包括了实现js保留小数点后N位的代码的使用技巧和注意事项,需要的朋友参考一下 在JS中,一般实现保留小数点后N位的话,都是利用toFixed函数 四舍五入的转换函数,如下: 参数里的: v表示要转换的值 e表示要保留的位数 函数里的两个for,这个是重点了, 第一个for针对小数点右边的情况,也就是保留小数点右边多少位; 第二个for针对小数点左边的情

  • 问题 在迭代操作或者其他操作的时候,怎样只保留最后有限几个元素的历史记录? 解决方案 保留有限历史记录正是 collections.deque 大显身手的时候。比如,下面的代码在多行上面做简单的文本匹配, 并返回匹配所在行的最后N行: from collections import deque def search(lines, pattern, history=5): previous_

  • 我使用用户提供的32字节秘密密钥使用HMAC-256对一些数据进行签名。我还希望我的应用程序使用AES-192加密数据。我应该向用户要求另一个秘密密钥(这次是16字节大小),还是有一种安全的方法从另一个32字节密钥中导出16字节的强秘密密钥?第二种方法会使应用程序配置更容易一点。有什么指导方针或提示吗?或者这种方法完全是胡说八道?

  • 问题内容: 我在弄清楚如何跳过csv文件中的n行但保留标题为1行时遇到了麻烦。 我想做的是迭代但保留第一行的标题。 将标题设置为跳过的行之后的第一行。最好的方法是什么? 问题答案: 您可以将行号列表传递给而不是整数。 通过给该函数提供整数10,您只需跳过前10行。 要保留第一行0(作为标题),然后将其他所有内容都跳过到第10行,您可以编写: 其他跳过行的方法 控制哪些行使用的两种主要方法是或参数。

  • 我正在尝试建立一个动态列表,基于用户从另一个下拉列表中选择的值,所以如果用户选择了'group1',那么我希望只显示类为'group-1'的项目。我希望能够执行类似的操作。 编辑:我把这个问题分成两个, 如何在select2列表中保留选项元素类?-我在下面为对此感兴趣的人提供一个答案。 如何根据选项类动态筛选select2列表?我打开了一个新的问题线程,在其中我将回答这个问题,因为解决方案完全不同