1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

jQuery で外部 HTML ファイルが表示されないときの原因と対処法

Last updated at Posted at 2019-07-14

外部ファイルが表示されない

jQueryを使用してヘッダーのHTMLを読み込もうとしたのに、うまく読み込まれませんでした。原因と対処法を説明していきます。

状況

問題のコードは、大体以下のような感じでした。

読み込む側

index.html
<!DOCTYPE html>
<html>
    <head>
        <!--サイトのアイコンの設定など-->
    </head>
    <body>
        <header>
        </header>
        <main>
            <!--サイトの内容-->
        </main>
        <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
        <script>
            jQuery(function() {
                jQuery('header').load('/header.html');
            });
        </script>
    </body>
</html>

読み込まれる側

header.html
<!DOCTYPE html>
<html>
    <head>
        <!--サイトのアイコンの設定など-->
    </head>
    <body>
        <main>
            <!--サイトの内容-->
        </main>
    </body>
</html>

index.htmlを開くと、header要素の中にheader.htmlの内容が表示されるはずですが、表示されません。

原因

index.htmlのheader要素にheader.htmlが入るとどうなるかを考えると、原因が分かります。

index.htmlのheader要素にheader.htmlが入ると...

index.html
<!DOCTYPE html>
<html>
    <head>
        <!--サイトのアイコンやスタイルシートの設定など-->
    </head>
    <body>
        <header>
            <!--ここから header.html-->
            <!DOCTYPE html>
            <html>
                <head>
                    <!--サイトのアイコンやスタイルシートの設定など-->
                </head>
                <body>
                    <main>
                        <!--サイトの内容-->
                    </main>
                </body>
            </html>
            <!--header.html ここまで-->
        </header>
        <main>
            <!--サイトの内容-->
        </main>
        <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
        <script>
            jQuery(function() {
                jQuery('header').load('/header.html');
            });
        </script>
    </body>
</html>

何がおかしいか分かりますね?

header要素の中に本来入らないはずのhead要素やbody要素などが入り、ぐちゃぐちゃになっています。

つまり、header.htmlは、こうすれば良かったわけです。

header.html
<!--サイトの内容-->

もはや例を示す必要があるのかというレベルです。

ちなみに、CSSは何も指定しなければindex.htmlで使用しているものが使用されます。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?