对于javascript,我是初学者。我是一名用户体验设计师,我试图在我的个人网站上使用一些代码。到目前为止,它进展顺利,但我有一个错误,谷歌到目前为止还没有帮我解决。
我正在做的是使用按钮执行以下操作:
这部分工作正常,没有错误。这是我的问题。
但是当我尝试再次使用scrollTop时,我收到了这个错误:
未捕获的TypeError:对象#的属性“top”不是函数
这是我的咖啡因:
jQuery(document).ready theExpander = ->
jQuery("#expander").toggle (->
# first callback to slide it down
jQuery(".expanding").slideDown 1000
jQuery(this).toggleClass "darker"
jQuery("html, body").animate
scrollTop: jQuery(this).offset().top - 50
, 600
jQuery(".more").addClass "hidden"
jQuery(".less").addClass "shown"
), ->
# second callback to slide it up
jQuery(".expanding").slideUp 1000
jQuery(this).toggleClass "darker"
jQuery("html, body").animate
scrollTop: jQuery(this).offset().top 200
, 600
jQuery(".more").removeClass "hidden"
jQuery(".less").removeClass "shown"
第二次点击正在启动回调的按钮时出现错误。我不清楚为什么会这样。我可以不让回调使用相同的scrollTop两次吗?
有没有人知道我在这做什么?如果我在第二个回调中删除这些行,它可以正常工作:
jQuery("html, body").animate
scrollTop: jQuery(this).offset().top 200
, 600
我从哪里开始?我是否需要在第二次回调中为Property 'top' of object #<Object> is not a function
错误或遗漏重新识别ID?
我是通过极端的试错来写这个,这是我做过的第一次回调。如果有人可以指出我的方式的错误,那将非常感激。
答案 0 :(得分:1)
jQuery(this).offset().top 200
被翻译为
jQuery(this).offset().top(200)
由于top不是函数,而是属性,因此会出错。
你的意思是?
jQuery(this).offset().top - 200