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