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

获取错误"无法读取未定义的属性'top'"

谢清野
2023-03-14

我搜索了这个网站,发现了类似的问题,但没有解决我的问题。当我滚动到一个div时,我试图使它固定在屏幕顶部。但我一直在犯错误:

"(index): 59未捕获类型错误:无法读取未定义的属性'top'at(index): 59"

    
    //store the element
    var cache = '.faixatrabalho';
           console.log( cache );
    
    //store the initial position of the element
    var vTop = $(cache).offset().top - parseFloat($cache.css('margin-top').replace(/auto/, 0));
      $(window).scroll(function (event) {
        // what the y position of the scroll is
        var y = $(this).scrollTop();
    
        // whether that's below the form
        if (y >= vTop) {
          // if so, ad the fixed class
          $(cache).addClass('stuck');
        } else {
          // otherwise remove it
          $cache.removeClass('stuck');
        }
      });
    
        </script>
    
    .faixatrabalho {
        padding-top: 20px;
    	width: 100vw;
        position: static;
        top: 0px;
      }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="faixatrabalho">
        
        <div id="trabalhoback" data-scroll-speed="3"></div>
        
    	<div class="titulo">Nosso Trabalho</div>
    	<div class="texto1">
    		<p > Exemple text</p>
    	</div>
    </div>

我还在学习jQuery,不能解决这个问题。

共有1个答案

吕森
2023-03-14

这个错误意味着$(高速缓存)。偏移()返回的未定义的,在jQuery术语中,这通常意味着$(高速缓存)没有找到任何东西。

脚本的布局来看,您可能正在立即执行此代码,并且您寻找的元素可能还不存在(因为文档仍在加载中)。尝试在文档完全加载后执行它。在jQuery中,您可以通过包装jQuery函数本身中的代码来实现这一点,默认情况下,jQuery函数将其设置为文档的就绪事件的处理程序:

$(function () {
    var cache = '.faixatrabalho';
    console.log( cache );

    //store the initial position of the element
    var vTop = $(cache).offset().top - parseFloat($cache.css('margin-top').replace(/auto/, 0));
});
 类似资料:
  • 问题内容: 我是Reactjs的新手。我正在尝试做一个非常简单的事情:当用户在文本区域内更改文本时,在render函数中更新div。有什么建议? 问题答案: 您应该绑定该函数。您收到此错误的原因是,在handleChange函数中,键盘操作未引用React类的上下文,因此您需要绑定该函数。 看到这个答案

  • 我正在选择area_enninFantry的所有子div,并循环调整某些子div的文本。cardArray是一个全局常量,myId在父函数中定义。 未捕获的TypeError:无法读取未定义的属性(读取“getAttribute”) 我在这篇文章中读到,这可能是因为字段/元素的内容可能是DOM元素,我应该用$()包装它们,所以我确实这样做了——将两个变量都更改为$(元素)[a]. attr(“标题

  • 我遇到了一个有趣的问题,这使我感到困惑。我正在执行一个正确返回数据的Sharepoint RestAPI调用,当我在数据上运行for循环时,它生成html,但仍然抛出我用作标题的错误。代码如下。如果我记录每个循环,它将返回值。HTML也可以很好地工作。问题是错误仍然会出现。

  • 问题内容: 我正在使用jQuery将表单字段发布到PHP文件,该文件仅根据是否工作而返回1/0。 代码摘录: 但是,每次成功(html == 1)时,控制台都会引发错误“未捕获的TypeError:无法读取未定义的属性’defaultView’”,并且警报永远不会发生…? Google似乎没有关于此错误和jQuery的大量信息,谁知道原因? 问题答案: 这是因为以前不是您要处理的内容,现在是jQu

  • 我的代码: 错误: 未处理PromisejectionWarning:TypeError:无法读取未定义的未处理PromisejectionWarning:未处理的promise拒绝的属性“forEach”。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。(拒绝id:1)(节点:7188)[DEP0018]弃用警告:未处理的promise