静的なサイトをWordPress化させることをしています。
そこで、自作のjsファイルの内容が反映されずに悩んでいます。
ちなみに、ディベロッパーツールで見てみると、
ファイル自体は正しく読み込まれているようです。
おそらく原因として考えているのが、ファイルの記述にエラーの表示があることです。
Uncaught TypeError: Cannot read properties of undefined (reading 'top')
という文がありました。
調べてみた結果、「top」の内容が見つからないという意味なのかなと思ったのですが、どこを改善したら良いかわからず質問させていただきました。
また、このような記述エラーがあるだけでWordPressにjsファイルの内容が反映されないことがあるのでしょうか。
もし何かご存知の方がおみえでしたら教えていただきたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ベストアンサー
おそらくドキュメントの読み込みが完了する前に取得しようとしていることが原因ではないでしょうか。
ドキュメントは上から実行されていくので、グローバルメニューがまだレンダリングされていない状態で位置を取得しようとするとグローバルメニュー自体が見つからず、そのプロパティは見つからないと言われます。
8行目・9行目をwindow.onload = function() {...}
や$(document).ready(function() {...}
の中に入れ込んで、HTMLドキュメントの読み込みが完了したときに実行する必要があるかと思います。
試してみてください。
解決できれば幸いです。
投稿2022/05/11 00:03
総合スコア111
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/12 13:03

0
同じようなエラーが出ていたのですが、こちらは解決しました。
ご質問のケースの場合 ('#global-nav') の部分で値を取得できていないことによるエラーでの可能性がかなり高いです。
⇨実際のページ
HTML
1 2<div id="mw_wp_form_mw-wp-form-1222" class="mw_wp_form mw_wp_form_input "> 3 <form method="post" action="" enctype="multipart/form-data"><p> 4<textarea name="name" cols="50" rows="1" >名前</textarea> 5</p> 6<p> 7<input type="email" name="mail" size="60" value="メールアドレス" /> 8</p> 9<p> 10<input type="text" name="text" size="60" maxlength="2000" value="問い合わせ内容" /> 11</p> 12<p> 13<button type="submit" name="button" value="send" class="button">送信する</button> 14</p> 15<input type="hidden" id="mw_wp_form_token" name="mw_wp_form_token" value="a1166c7a6f" /><input type="hidden" name="_wp_http_referer" value="/contact/" /><input type="hidden" name="mw-wp-form-form-id" value="1222" /><input type="hidden" name="mw-wp-form-form-verify-token" value="431ae769fc8379f5e0b24b990bca066c9a055856" /></form> 16 <!-- end .mw_wp_form --></div> 17 18 19 20<input id="antibot" type="text" value="パスフレーズを入力" name="antibot"><br> 21<p>BOT対策のため、パスフレーズを入力に 4649 と入力してください</p> 22<div>
失敗したコード
javaSprict
1<script> 2var hoge = document.getElementById('antibot'); 3var xyz= hoge.getAttribute('value'); 4window.onload = function(){ 5 //1000ミリ秒(1秒)毎に関数を呼び出す 6 setInterval(antibot, 1000); 7} 8function antibot(){ 9 if(xyz == "4649"){document.document.getElementsByClassName("button").style.cssText = 'display:inline-block !important';} 10 else{document.getElementsByClassName("button").style.cssText = 'display:none !important';;} 11} 12</script>
成功したコード
javaSprict
1<script> 2var hoge; 3var xyz; 4var abc; 5window.onload = function(){ 6 //1000ミリ秒(1秒)毎に関数を呼び出す 7 setInterval(antibot, 1000); 8} 9function antibot(){ 10 hoge = document.getElementById('antibot'); 11 xyz = hoge.getAttribute('value'); 12 abc = document.getElementsByClassName("button"); 13 if(xyz == "4649"){abc[0].style.cssText = 'display:inline-block !important';} 14 else{abc[0].style.cssText = 'display:none !important';;} 15} 16</script>
投稿2022/05/12 13:03
総合スコア345
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/12 15:02

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。