Javascript FadeIn后滚动的问题

Javascript FadeIn后滚动的问题,javascript,jquery,html,css,scroll,Javascript,Jquery,Html,Css,Scroll,我在div中淡入淡出后滚动时遇到了这个问题。当div可见时,它正常工作,但当您单击导航时,它会从不可见状态淡入淡出,然后滚动,我得到以下错误: 未捕获的TypeError:无法读取未定义的属性“substr” HTML代码 <nav><a href="#a1"></a><a href="#a2"></a><a href="#a3"></a></nav> <main> /*in which

我在div中淡入淡出后滚动时遇到了这个问题。当div可见时,它正常工作,但当您单击导航时,它会从不可见状态淡入淡出,然后滚动,我得到以下错误:

未捕获的TypeError:无法读取未定义的属性“substr”

HTML代码

<nav><a href="#a1"></a><a href="#a2"></a><a href="#a3"></a></nav>
<main> /*in which i have few anchors to scroll to
<a name="a1"></a>
/*some code
<a name="a2"></a>
/*some code
<a name="a3"></a>
/*some code
</main>
<div id="additionalinfo" style="display: none"> /* div which goes in when main fadesout and viceversa
/*some code
</div>
我试了很多办法想克服它,但都做不到。我想在这里做的是当你点击导航,当你在#附加信息时,div淡出,main淡入,然后它应该滚动到main中的右锚。最后一部分根本不起作用。一些想法?

$('[name=“'+$.attr(this,'href').substr(1)+''“])
中,
这并不是你想象的那样。。。
的范围始终与当前函数相关:
$('html,body')。在本例中,animate()
。因此,
这个
'html,body'
,而不是单击的元素。这就是为什么会出现错误,因为这些元素上没有href

因此,在单击处理程序中,您将立即在变量中获得href属性:

var target = $(this).attr('href').substr(1);
另外一件事:你必须阻止正常的链接行为,这样它就不会“覆盖”你的
.animate()
效果

我不知道这里的
#additionalinfo
有什么用。。。我对你的HTML标记和脚本做了很多假设,但这些都不够“完整”,不足以重现这个问题

$('nava[href^=“#”]”)。单击(函数(e){
e、 预防默认值();
控制台日志(“单击”);
var target=$(this.attr('href').substr(1);
控制台日志(目标);
如果($('#additionalinfo')。是(“:可见”)){
$('#additionalinfo')。淡出(函数(){
$('main').fadeIn(函数(){
$('html,body')。设置动画({
scrollTop:$('[name=“'+target+'“]').offset().top
}, 500);
返回false;
});
});
}否则{
$(“#additionalinfo”).show();//假定有一天会使前一个条件为真。。。
}
});
#其他信息{
边框:1px纯黑;
高度:1米;
}
.垫片{
高度:50em;
}

--附加信息--
主要a1
主a2
主要a3

你搞定了,一切都很顺利。谢谢你,伙计!希望我的问题表达得很好。
var target = $(this).attr('href').substr(1);