前提・実現したいこと
JavaScript初心者です。
ユーザー名をクリックすると、文字が飛び跳ねる機能を実装したいと思っています。色々調べて、自分なりに記述をしてみたのですが、機能が実装できません。
↓こんなふうにしたいです。
https://gyazo.com/23c7d040aa1500030a51be4779bb20b5
発生している問題・エラーメッセージ
最初はこの二つがエラーとして、出力していました。
GET https://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css net::ERR_ABORTED 404
index.js:4 Uncaught TypeError: Cannot read property 'addEventListener' of null
しかし、↓を記述する(index.jsに)ことで、二つ目のエラーは表示されなくなりましたが、機能は実装できていません。
if (!name){ return false;}
application.js
require("@rails/ujs").start() // require("turbolinks").start() require("@rails/activestorage").start() require("channels") require("../index");
index.js
window.addEventListener('load', () => { const name = document.getElementById("name"); if (!name){ return false;} name.addEventListener("mousedown", () => { name.classList.add("jump");}); name.addEventListener("animationend", () => { name.classList.remove("jump");}); name.addEventListener("animationcancel", () => { name.classList.remove("jump");}) });
index.html.erb
<div class="title"> <ul class="top-botton"> <% if user_signed_in? %> <li><%= link_to current_user.name, user_path(current_user.id), class:"user-name", id: "name" %></li>←ここでIDを取得している <li><%= link_to 'New Article', new_article_path, class:"new-article" %></li> <% else %> <li><%= link_to 'Log in', new_user_session_path, class: "login" %></li> <li><%= link_to 'Sign up', new_user_registration_path, class: "sign-up" %> <% end %> </ul> <div class="box"> <div class='wave -one'></div> <div class='wave -two'></div> <div class='wave -three'></div> <div class="title-content">B-blog</div> </div> </div> 以下省略
試したこと
Uncaught TypeError: Cannot read property 'addEventListener' of null
はnullに対して、addEventListenerを実行していたので、おかしなことになっていた。なので、if文を記述することで、nameがnullの場合、それ以降のコードを読み込まないようにすることで、解決した?のかと思います。しかし、結局機能の実装はできていないので、原因がわかりません。
JavaScriptは本当にわかりません。どなたか教えていただけると幸いです。
追加のエラー
↓Networkタブで404のステータスエラーが出ていました!
https://gyazo.com/c62d154ea33cc3359e03ebb9e0ee6c14
予想ですが、
application.html.erbの記述がおかしい?と思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。