Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery:UncaughtTypeError:无法读取属性';顶部';未定义的_Jquery_Html - Fatal编程技术网

Jquery:UncaughtTypeError:无法读取属性';顶部';未定义的

Jquery:UncaughtTypeError:无法读取属性';顶部';未定义的,jquery,html,Jquery,Html,尽管这个Jquery函数运行良好,但我还是遇到了上述错误 Html: 数字图书馆 数字图书馆是一种特殊的图书馆,它集中了数字对象的集合,包括文本、视觉材料、音频材料、视频材料,以电子媒体格式存储(与打印、缩微或其他媒体相反),以及用于组织、存储、,以及检索库集合中包含的文件和媒体。 要搜索电子书,您只需在下面的文本框中搜索您想要的电子书。当您单击“搜索”时,将显示一个包含相关结果的表格。 要下载电子书,只需单击结果表中的下载链接 Jquery: <script type="text/j

尽管这个Jquery函数运行良好,但我还是遇到了上述错误

Html:


数字图书馆

数字图书馆是一种特殊的图书馆,它集中了数字对象的集合,包括文本、视觉材料、音频材料、视频材料,以电子媒体格式存储(与打印、缩微或其他媒体相反),以及用于组织、存储、,以及检索库集合中包含的文件和媒体。


要搜索电子书,您只需在下面的文本框中搜索您想要的电子书。当您单击“搜索”时,将显示一个包含相关结果的表格。


要下载电子书,只需单击结果表中的下载链接

Jquery:

<script type="text/javascript">
$(document).on('click','.open', function(event) {
    event.preventDefault();
    var target = "#" + this.getAttribute('#context');
    $('html, body').animate({
        scrollTop: $(target).offset().top
    }, 2000);
});
</script>

$(文档).on('click','open',函数(事件){
event.preventDefault();
var target=“#”+this.getAttribute('#context');
$('html,body')。设置动画({
scrollTop:$(目标).offset().top
}, 2000);
});
但正因为如此,有一个链接没有打开

Html:


我已经检查了链接拼写和其他方面,但找不到任何解决方案。请帮帮我!感谢您告诉您,
目标
中没有与选择器匹配的元素。由于没有匹配的元素,
offset
返回
未定义的
;当您尝试执行未定义的
操作时,任何
操作都会出错

因此,您需要查看
target
,找出它为什么不是您试图获取的元素的有效选择器。通过在
scrollTop:$(target).offset().top
行上设置断点,并将光标悬停在
target
变量上,可以使用浏览器中内置的调试器完成此操作

现在您已经引用了HTML,我们可以看到类为
open
的元素没有
#context
属性(在任何情况下,这将是一个非常非常奇怪的名称,如果可能的话,编写起来也非常尴尬)

如果您添加了
data context=“one”
等:

<a href="#" id="first" data-context="one" class="open">What is Digital Library?</a>
…并显示元素:

$(target).show();
……它将起作用:

$(文档).on('click','open',函数(事件){
event.preventDefault();
var target=“#”+this.getAttribute('data-context');
$(target.show();
$('html,body')。设置动画({
scrollTop:$(目标).offset().top
}, 2000);
});

数字图书馆

数字图书馆是一种特殊的图书馆,它集中收集数字对象,包括文本、视觉材料、音频材料、视频材料,以电子媒体格式存储(与打印、缩微或其他媒体相反),以及 用于组织、存储和检索库集合中包含的文件和媒体的方法


要搜索电子书,您只需在下面的文本框中搜索您想要的电子书。单击“搜索”时,将显示一个包含相关结果的表格


要下载电子书,只需单击结果表中的下载链接

  • 如果出现错误,该函数将无法正常工作
  • 您可以获得属性
    #context
    ,但我认为您需要属性
    context
    (不带#)
  • 您共享的HTML与Javascript无关
  • 要解决这个问题:

    <script type="text/javascript">
    $(document).on('click','.open', function(event) {
        event.preventDefault();
        var target = "#" + this.getAttribute('context'); // see here
        $('html, body').animate({
            scrollTop: $(target).offset().top
        }, 2000);
    });
    </script>
    
    
    $(文档).on('click','open',函数(事件){
    event.preventDefault();
    var target=“#”+this.getAttribute('context');//参见此处
    $('html,body')。设置动画({
    scrollTop:$(目标).offset().top
    }, 2000);
    });
    
    因为错误是由于
    $(目标)
    未找到任何元素而产生的,因此不存在
    offset()
    方法,也不存在
    top
    属性

    Instead of this code,
    
     event.preventDefault();
        var target = "#" + this.getAttribute('#context');
        $('html, body').animate({
            scrollTop: $(target).offset().top
        }, 2000);
    
    用这个,

    event.preventDefault();
    $("body, html").animate({
                scrollTop: $($(this).attr('context')).offset().top 
            }, 2000);
    

    这是因为
    target
    无效。没有这样的元素。event.preventDefault();是否将停止重定向到新位置的锚定标记的默认行为,也就是html上的open类在哪里?您正在询问一个处理程序,该处理程序使用class
    open
    处理clicks元素,但您没有向我们显示该类的任何元素。有这样的元素。现在就检查@Sverri M。Olsen@AishaSalman但是单击的元素上没有
    #context
    属性,这意味着
    目标
    无效。您可能需要使用
    var target=$(this).parents(#context”)
    。我已经删除了#before context,但链接仍然没有打开@Marcos PerezGude@AishaSalman:这是因为元素上根本没有
    上下文
    属性。(他们也不应该这样做,这是一个无效属性。)现在检查我的html@t.J.Crowder这个jquery函数工作得非常好,但问题是我的导航栏链接没有打开。@Aishaalman:我不知道你在说什么导航栏。以上回答了所提出的问题。
    <script type="text/javascript">
    $(document).on('click','.open', function(event) {
        event.preventDefault();
        var target = "#" + this.getAttribute('context'); // see here
        $('html, body').animate({
            scrollTop: $(target).offset().top
        }, 2000);
    });
    </script>
    
    Instead of this code,
    
     event.preventDefault();
        var target = "#" + this.getAttribute('#context');
        $('html, body').animate({
            scrollTop: $(target).offset().top
        }, 2000);
    
    event.preventDefault();
    $("body, html").animate({
                scrollTop: $($(this).attr('context')).offset().top 
            }, 2000);