質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

356閲覧

JQuery部分をJavaScriptで記述したい。

ah6BD2gZo5GnjnT

総合スコア46

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/09/24 02:42

編集2020/09/24 04:09

現在、サイトの模写を終え、JQueryで実装している部分をJavaScriptで記述しております。

しかし、ハンバーガーのボタンをクリックしても、ナビゲーションが表示されません。

*JQueryでは、動作確認済みです。

何故なのでしょうか?

JQuery

1 <script src="js/jquery-3.4.1.min.js"></script> 2 <script> 3 //ここからハンバーガーメニューの実装 4 $(document).ready(function(){ 5 $('#humberger').on('click', function(){ 6 $(' body, nav ').toggleClass('show'); 7 $(this).toggleClass('click'); 8 }); 9}); 10 </script>

JavaScript

1//ここからハンバーガーメニューの実装 2var humberger = document.getElementById("humberger"); 3var body = document.querySelector("body"); 4var nav = document.querySelector("nav"); 5 6humberger.addEventListener("click", function () { 7 nav.classList.toggle("show"); 8 body.classList.toggle("show"); 9 humberger.classList.toggle("click"); 10});

追記
HTML,CSSは文字数制限対象になりますので、codesandboxのURLを貼ります。
以下に全てのファイルが閲覧出来るようになっております。
ソースコード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/24 03:33

html,cssもご提示ください。 JavaScriptだけ見て言えることは少ないです
m.ts10806

2020/09/24 03:50

質問は編集できますので。
Zuishin

2020/09/24 03:57

jQuery だとうまく動くかどうか確かめてみましたか?
guest

回答2

0

ベストアンサー

修正箇所は二か所です。
まず 15 行目、

tab.addEventListener('click', (function(){

これを次のように書き換えましょう。

tab.addEventListener('click', function(){

次に、humberger を取得する時点でロードが終わっていないため、humberger の中身が null になっています。それを避けるため、確実にロードを待ちましょう。

JavaScript

1window.addEventListener("load", () => { 2 // この中に他のコードを入れる 3});

以上でハンバーガーメニューが開くことを確認しました。全体のコードは次のようになります。

JavaScript

1//ハンバーガーメニューの実装 2window.addEventListener("load", () => { 3 const humberger = document.getElementById("humberger"); 4 const body = document.querySelector("body"); 5 const nav = document.querySelector("nav"); 6 7 humberger.addEventListener("click", function () { 8 nav.classList.toggle("show"); 9 body.classList.toggle("show"); 10 humberger.classList.toggle("click"); 11 }); 12 13 //タブ切り替え 14 const tab = document.querySelector(".tab a"); 15 tab.addEventListener("click", function () { 16 var tabContents = tab.attr("href"); 17 if (tabContents.classList.add("active")) { 18 tabContents.siblings.classList.remove("active"); 19 } 20 return false; 21 }); 22});

投稿2020/09/24 05:05

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ah6BD2gZo5GnjnT

2020/09/24 06:13 編集

素早く的確な回答を、ありがとうございます。タブボタンの切り替えの実装部分も、クリック出来ない理由が、ハンバーガーメニューのボタンと同じ理由かもしれないので、修正してみたいと思います。助かりました。
Zuishin

2020/09/24 06:13

どうでしょうね。jQuery は jQuery で便利なところがあると思いますが、それを使わずでき、少しでも軽くしたいなら、使わないという事例も増えるとは思います。
ah6BD2gZo5GnjnT

2020/09/24 06:16

Jsにトライしてみます。ありがとうございます????
Zuishin

2020/09/24 06:20

解決しないということは、この回答で何か問題がありましたか?
Zuishin

2020/09/24 07:32

古いコメントが編集されたので、私の返答が意味不明なものとなっています。また、この質問にはタブは関係ないので、新しく何かを始める前にこちらを解決してください。
guest

0

ざっと見たところで、気になる点は二箇所あります。

  • $(document).ready() と同等の機能がない
  • document.querySelector("nav") が一つ目のnav要素しか参照しておらず、nav要素が複数存在する場合に対応できていない

※HTML,CSSも含めて、現象を再現可能なコードを出すと良いと思います。

Re: ah6BD2gZo5GnjnT さん

投稿2020/09/24 03:03

編集2020/09/24 03:04
think49

総合スコア18164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ah6BD2gZo5GnjnT

2020/09/24 03:34

カギカッコの数が対応していないということも考えられますでしょうか?
think49

2020/09/24 03:38

SyntaxErrorが発生しない事から、文法上の誤りはないと考えられます。
think49

2020/09/24 06:37 編集

> SyntaxErrorが発生しない事から、文法上の誤りはないと考えられます。 上記は質問文が一度も修正されていない状態のコードに指して、回答しています。 https://teratail.com/questions/history-questions/293729 追記されたソースコードでは、SyntaxErrorが発生します。 https://codesandbox.io/s/dental-clinic-moxiekoteingu-y432l?file=/main.js:0-602 質問文に書いたコードと元コードが異なる為、発見できませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問