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

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

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

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

Q&A

解決済

1回答

659閲覧

Javascriptを外部化したいです

dboy

総合スコア3

JavaScript

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

0グッド

0クリップ

投稿2021/12/29 03:02

編集2021/12/29 07:01

###インラインで組み込んだJavascriptを外部化したいです
HTMLでクラスのみで作ったリストで、
5行あるうち、2つ目と4つ目を非表示にしたく、インラインでは下記コードで成功しているのですが、外部化するとエラーになります

インラインでのコード

<body> <!-- **パンくずリスト--> <nav class="breadcrumb"> <ol class="breadcrumb__list"> <li class="breadcrumb__listItem"><a href="/">カテゴリー1</a></li> <li class="breadcrumb__listItem"><a href="category">カテゴリー2</a></li> <li class="breadcrumb__listItem"><a href="category">カテゴリー3</a></li> <li class="breadcrumb__listItem"><a href="category">カテゴリー4</a></li> <li class="breadcrumb__listItem">カテゴリー5</li> </ol> </nav> <!-- **パンくずリスト--> <script type="text/javascript"> const pan = document.getElementsByClassName('breadcrumb__listItem'); pan[1].remove(); pan[2].remove(); </script> </body>

1.カテゴリー1
3.カテゴリー3
5.カテゴリー5

と表示には成功しています

下記のように外部化しました

<head> <meta charset="UTF-8"> <script type="text/javascript" src="pan.js"></script> <title>Document</title> </head> <body> <!-- **パンくずリスト--> <nav class="breadcrumb"> <ol class="breadcrumb__list"> <li class="breadcrumb__listItem"><a href="/">カテゴリー1</a></li> <li class="breadcrumb__listItem"><a href="category">カテゴリー2</a></li> <li class="breadcrumb__listItem"><a href="category">カテゴリー3</a></li> <li class="breadcrumb__listItem"><a href="category">カテゴリー4</a></li> <li class="breadcrumb__listItem">カテゴリー5</li> </ol> </nav> <!-- **パンくずリスト--> </body>

pan.js

const pan = document.getElementsByClassName('breadcrumb__listItem'); pan[1].remove(); pan[2].remove();

コンソールエラー

pan.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'remove')
at pan.js:2

エラーなので表示も
1.カテゴリー1
2.カテゴリー2
3.カテゴリー3
4.カテゴリー4
5.カテゴリー5

とjavascriptが効いてないです。

Javascript初心者です。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

head内に配置すると対象の要素が画面上に存在する前に動くので、要素が見つからずエラーとなります。
コンテンツロードのイベントを挟むか、</body>の前に配置してください。
別ファイルにしても、結局はそこを読み込んだ時に実行されるのでそういった配慮が必要となります。

投稿2021/12/29 03:05

m.ts10806

総合スコア80875

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

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

dboy

2021/12/29 03:17

なるほど、先にjsを組み込んだことが原因だったのですね </body>の前に配置したところうまくいきました ありがとうございます
m.ts10806

2021/12/29 03:40

>先にjsを組み込んだことが原因だったのですね いえ、回答に書いたように「対象の要素が読み込まれる前に動作するように組んでいることが問題」です。 先に組み込んでも回答に書いたようにコンテンツロード時のイベント内で要素を参照するようにすればちゃんと操作できます。
dboy

2021/12/29 04:21

希望としましてはheader内に組み込みたいと考えております。 どういう記述をついかすればよろしいでしょうか
m.ts10806

2021/12/29 04:44

回答にリンク貼ってますよ。
dboy

2021/12/29 06:13

リンクになっていたのですね、失礼しました。 今回初めての質問なので気が付きませんでした 試してみます
m.ts10806

2021/12/29 06:24

失礼、それは配慮が足りませんでした。 「マークダウン」と言われる記法で書かれてるので、 質問の感じからおそらくある程度理解されてるとは思いますが、 一応確認しておいてもらえたらと。 https://teratail.com/help#about-markdown
dboy

2022/01/02 04:35

教えて頂いたリンクを参考に下記のように記述し、headに外部のjsファイルを読み込んだところ ``` <head> <script type="text/javascript" src="pan.js"></script> </head> <body> <nav class="breadcrumb"> <ol class="breadcrumb__list"> <li class="breadcrumb__listItem"><a href="/">カテゴリー1</a></li> <li class="breadcrumb__listItem"><a href="/">カテゴリー2</a></li> <li class="breadcrumb__listItem"><a href="/">カテゴリー3</a></li> <li class="breadcrumb__listItem"><a href="/">カテゴリー4</a></li> <li class="breadcrumb__listItem">カテゴリー5</li> </ol> </nav> </body> ``` pan.js ``` window.addEventListener('DOMContentLoaded', (event) => { const pan = document.getElementsByClassName('fs-c-breadcrumb__listItem'); pan[1].remove(); pan[2].remove(); }); ``` カテゴリー1 カテゴリー3 カテゴリー5 と表示することができました。 希望通りの表示ができましたが、これであっていますでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問