前提・実現したいこと
JavaScriptのdocumentオブジェクトを用いてHTMLを書いています。
元々のHTMLファイルと同じ表示をJavaScriptのdocumentオブジェクトで表したいです。
具体的には以下のサイトに近いと思いますが、イベントなどは起こさずに、
HTMLの中身をJavaScriptで設定しようとしているだけです。
参考サイト
発生している問題・エラーメッセージ
JavaScriptで設定した部分の
var body = document.getElementById("body"); var header = document.getElementById("header"); var h1 = document.createElement('h1'); h1.textContent = "サンプルページ"; header.appendChild(h1);
の部分はブラウザで確認したときに元々のHTMLファイルと同様に表示されるのですが、
他の部分ではJavaScriptのdocumentオブジェクトでは表示が消えてしまい、
どの様に修正すればいいかわからず困っています。
該当のソースコード
JavaScriptのdocumentオブジェクトを用いて書いたもの
HTML
1<!DOCTYPE html> 2<html lang = "ja"> 3<head> 4 <meta charset= "utf-8"> 5 <title>サンプルページ</title> 6 7</head> 8 9<body id = "body"> 10 <header id = "header"> 11 </header> 12 13 <nav class ="dropdown"> 14 <ul> 15 <li><a href ="no1.html" id = "no1"></a></li> 16 <li><a href ="no2.html">その2</a></li> 17 <li><a href ="no3.html">その3</a></li> 18 </ul> 19 </nav> 20 21 <article> 22 <h2 id = "contents1"></h2> 23 <p id = "sentence1"></p> 24 <br> 25 <h2>内容2</h2> 26 <p id = "paragraph1">行1 27 <br>行2 28 <br>行3</p> 29 <br> 30 <h3>内容3</h3> 31 <p id = "paragraph2">行1 32 <br>行2</p> 33 <ul> 34 <ol> 35 <li>項目1</li> 36 <li>項目2</li> 37 </ol> 38 </ul> 39 40 <form> 41 <h2>フォーム</h2> 42 <div> 43 <lavel>氏名:<input type="text" size="15" name="name"></lavel><br> 44 <label>問い合わせ内容:<input type="text" size="20" name="question"></label><br> 45 <input type="submit" value="submit"> 46 </div> 47 </form> 48 49 </article> 50 51 52 <footer id = "footer"> 53 <ul> 54 <a href ="page1.html">他のページ1</a> 55 <a href ="page2.html">他のページ2</a> 56 </ul> 57 <small id = "copyright"></small> 58 </footer> 59 60 <!-- JavaScriptでDOM指定 --> 61 <script> 62 var body = document.getElementById("body"); 63 var header = document.getElementById("header"); 64 var h1 = document.createElement('h1'); 65 h1.textContent = "サンプルページ"; 66 header.appendChild(h1); 67 68 var nav = document.getElementsByClassName("dropdown"); 69 var h2 = document.createElement("h2"); 70 h2.textContent = "メニュー"; 71 nav.appendChild(h2); 72 var no1 = document.getElementById("no1"); 73 no1.textContent = "その1"; 74 nav.appendChild(no1); 75 76 var article = document.getElementById("aricle"); 77 var contents1 = document.createElement("contents1"); 78 contents1.textContent = "内容1"; 79 article.appendChild(contents1); 80 var sentence1 = document.createElement("sentence1"); 81 sentence1.textContent = "文章1"; 82 article.appendChild(sentence1); 83 84 var footer = document.getElementsByClassName("footer"); 85 var copyright = document.getElementById("copyright"); 86 copyright.textContent = "Copyright © "; 87 footer.appendChild(copyright); 88 89 </script> 90 91</body> 92</html>
元のHTML
HTML
1<!DOCTYPE html> 2<html lang = "ja"> 3<head> 4 <meta charset= "utf-8"> 5 <title>サンプルページ</title> 6 <link rel="stylesheet" href="sample.css" type="text/css" /> 7</head> 8 9<body> 10 <header> 11 <h1>サンプルページ</h1> 12 </header> 13 14 <!-- menu --> 15 <nav class ="dropdown"> 16 <h2>メニュー</h2> 17 <ul> 18 <li><a href ="no1.html">その1</a></li> 19 <li><a href ="no2.html">その2</a></li> 20 <li><a href ="no3.html">その3</a></li> 21 </ul> 22 </nav> 23 24 <!-- main content --> 25 <article> 26 <h2>内容1</h2> 27 <p>文章1</p> 28 <br> 29 <h2>内容2</h2> 30 <p id = "paragraph1">行1 31 <br>行2 32 <br>行3</p> 33 <br> 34 <h3>内容3</h3> 35 <p id = "paragraph2">行1 36 <br>行2</p> 37 <ul> 38 <ol> 39 <li>項目1</li> 40 <li>項目2</li> 41 </ol> 42 </ul> 43 44 <form> 45 <h2>フォーム</h2> 46 <div> 47 <lavel>氏名:<input type="text" size="15" name="name"></lavel><br> 48 <label>問い合わせ内容:<input type="text" size="20" name="question"></label><br> 49 <input type="submit" value="submit"> 50 </div> 51 </form> 52 53 </article> 54 55 56 <footer> 57 <ul> 58 <a href ="page1.html">他のページ1</a> 59 <a href ="page2.html">他のページ2</a> 60 </ul> 61 <small>Copyright © </small> 62 </footer> 63 64</body> 65</html>
###修正後
ご回答を受けて、修正したものを掲載します。
<nav>, <form>, <footer>部分で元々のHTMLファイルと同様に表示されないという問題が発生しています。 <nav>の部分で全て一行で表示され、改行ができていないことに加え、HTMLの<li>タグにより「・」のみが表示されています。 ``` var no1 = document.getElementById("no1"); no1.textContent = "その1"; nav.appendChild(no1); var no2 = document.getElementById("no2"); no2.textContent = "その2"; nav.appendChild(no2); ``` <form>の部分では<input type="text">によりフォームの入力窓のみが表示されている状態です。 ```HTML
1<!DOCTYPE html> 2<html lang = "ja"> 3<head> 4 <meta charset= "utf-8"> 5 <title>サンプルページ</title> 6 7</head> 8 9<body id = "body"> 10 <header id = "header"> 11 </header> 12 13 <nav id="dropdown" class ="dropdown"> 14 <ul> 15 <li><a href ="no1.html" id = "no1"></a></li> 16 <li><a href ="no2.html" id = "no2"></a></li> 17 <li><a href ="no3.html">その3</a></li> 18 </ul> 19 </nav> 20 21 <article id="article"> 22 <h2 id = "contents1"></h2> 23 <p id = "sentence1"></p> 24 <br> 25 <h2>内容2</h2> 26 <p id = "paragraph1">行1 27 <br>行2 28 <br>行3</p> 29 <br> 30 <h3>内容3</h3> 31 <p id = "paragraph2">行1 32 <br>行2</p> 33 <ul> 34 <ol> 35 <li>項目1</li> 36 <li>項目2</li> 37 </ol> 38 </ul> 39 40 <form> 41 <h2>フォーム</h2> 42 <div> 43 <lavel id = "name"><input type="text" size="15" name="name"></lavel><br> 44 <label>問い合わせ内容:<input type="text" size="20" name="question"></label><br> 45 <input type="submit" value="submit"> 46 </div> 47 </form> 48 49 </article> 50 51 52 <footer id = "footer"> 53 <ul> 54 <a href ="page1.html" id = "other1"></a> 55 <a href ="page2.html" id = "other2"></a> 56 </ul> 57 <small id = "copyright"></small> 58 </footer> 59 60 <!-- JavaScriptでDOM指定 --> 61 <script> 62 var body = document.getElementById("body"); 63 var header = document.getElementById("header"); 64 var h1 = document.createElement('h1'); 65 h1.textContent = "サンプルページ"; 66 header.appendChild(h1); 67 68 var nav = document.getElementById("dropdown"); 69 var h2 = document.createElement("h2"); 70 h2.textContent = "メニュー"; 71 nav.appendChild(h2); 72 var no1 = document.getElementById("no1"); 73 no1.textContent = "その1"; 74 nav.appendChild(no1); 75 var no2 = document.getElementById("no2"); 76 no2.textContent = "その2"; 77 nav.appendChild(no2); 78 79 var article = document.getElementById("article"); 80 var contents1 = document.createElement("contents1"); 81 contents1.textContent = "内容1"; 82 article.appendChild(contents1); 83 var sentence1 = document.createElement("sentence1"); 84 sentence1.textContent = "文章1"; 85 article.appendChild(sentence1); 86 87 var form = document.getElementById("form"); 88 form.textContent = "フォーム"; 89 article.appendChild(form); 90 var name = document.getElementById("name"); 91 name.textContent = "氏名:"; 92 form.appendChild(name); 93 94 var footer = document.getElementById("footer"); 95 var other1 = document.getElementById("other1"); 96 other1.textContent = "他のページ1"; 97 footer.appendChild(other1); 98 var other2 = document.getElementById("other2"); 99 other2.textContent = "他のページ2"; 100 footer.appendChild(other2); 101 var copyright = document.getElementById("copyright"); 102 copyright.textContent = "Copyright © "; 103 footer.appendChild(copyright); 104 105 </script> 106 107</body> 108</html>
var form = document.getElementById("form"); form.textContent = "フォーム"; article.appendChild(form); var name = document.getElementById("name"); name.textContent = "氏名:"; form.appendChild(name);
<footer>部分の表示が全て一行で表示され、改行ができていません。
var footer = document.getElementById("footer");
var other1 = document.getElementById("other1");
other1.textContent = "他のページ1";
footer.appendChild(other1);
var other2 = document.getElementById("other2");
other2.textContent = "他のページ2";
footer.appendChild(other2);
var copyright = document.getElementById("copyright");
copyright.textContent = "Copyright © ";
footer.appendChild(copyright);
他のページ1他のページ2Copyright ©
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。