私はjavascriptに関しては初心者です。私は UX デザイナーで、個人の Web サイトでコードを使用しようとしています。これまでのところ、うまくいっていますが、Google がこれまでのところ理解に役立っていないというエラーが発生しています。
私がやっていることは、次のことを行うボタンを持っていることです:
- クリックすると、コールバックで .toggle が統計されます。
- コールバックの最初の部分では、.slideDown を使用してセクションを開き、下にスクロールして非表示のコンテンツを表示します。
- 同時に、クリックした場所に関係なく、セクションの上部がページの上部から 50px になるように移動します。これにより、非表示のコンテンツがページ全体に表示されます。
この部分は正常に動作し、エラーはありません。これが私の問題です。
- コールバックでは、.slideUp を使用してコンテンツ領域を再度閉じます。これはうまくいきます。
しかし、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"
コールバックを開始しているボタンを 2 回クリックすると、エラーが表示されます。これがなぜなのか、私にはわかりません。コールバックで同じ scrollTop を 2 回使用できないようにすることはできますか?
私がここで何をしているのか誰にも分かりませんか? 2 番目のコールバックでこれらの行を削除すると、エラーなしで動作します。
jQuery("html, body").animate
scrollTop: jQuery(this).offset().top 200
, 600
どこから始めればよいですか?Property 'top' of object #<Object> is not a function
エラーまたは脱落のために 2 回目のコールバックで ID を再確認する必要がありますか?
私は極端な試行錯誤を経てこれを書いています。これは私が今まで行った最初のコールバックです。誰かが私のやり方の誤りを指摘できれば、それは大歓迎です。