@@ -11,18 +11,28 @@ title: DOM
1111` document.getElementById ` <Term >関数</Term >は、<Term >引数</Term >として <Term >HTML 要素</Term >の ` id ` <Term >属性</Term >に指定された値を<Term >文字列</Term >として<Term >渡す</Term >ことで、その<Term >要素</Term >を表す<Term >オブジェクト</Term >を<Term >返し</Term >ます。
1212
1313``` html title="index.html"
14- <div id =" greeting" >Hello World</div >
14+ <!doctype html>
15+ <html lang =" ja" >
16+ <head >
17+ <meta charset =" utf-8" />
18+ <title >Title</title >
19+ </head >
20+ <body >
21+ <div id =" greeting" >Hello World</div >
22+ <script src =" ./script.js" ></script >
23+ </body >
24+ </html >
1525```
1626
1727``` js title="script.js"
18- const element = document .getElementById (" greeting" );
19- element .textContent = " Hello DOM" ;
28+ const greetingElement = document .getElementById (" greeting" );
29+ greetingElement .textContent = " Hello DOM" ;
2030```
2131
2232<ViewSource url = { import .meta .url } path = " _samples/get-element-by-id" />
2333
2434{ /* prettier-ignore */ }
25- <Term >変数</Term > ` element ` には、` index.html ` に記述された ` div ` <Term >要素</Term >に対応する<Term >オブジェクト</Term >が<Term >代入</Term >されています。
35+ <Term >変数</Term > ` greetingElement ` には、` index.html ` に記述された ` div ` <Term >要素</Term >に対応する<Term >オブジェクト</Term >が<Term >代入</Term >されています。
2636
2737![ DOM] ( ./dom.png )
2838
@@ -37,6 +47,27 @@ element.textContent = "Hello DOM";
3747
3848` textContent ` <Term >プロパティ</Term >は、<Term >HTML 要素</Term >の内部のテキストを表します。<Term >オブジェクト</Term >の<Term >プロパティ</Term >は通常の<Term >変数</Term >のように取得や<Term >代入</Term >が可能で、上の例では ` textContent ` <Term >プロパティ</Term >に対して ` "Hello DOM" ` という<Term >文字列</Term >を代入することで、` div ` <Term >要素</Term >の内部のテキストを変更しています。
3949
50+ ### 確認問題
51+
52+ 下のような HTML が記述されています。
53+
54+ ``` html title="index.html"
55+ <div >Good <strong id =" greeting-type" >morning</strong >!</div >
56+ ```
57+
58+ JavaScript を使って、` morning ` を ` evening ` にしてください。
59+
60+ <Answer >
61+
62+ ``` js title="script.js"
63+ const greetingType = document .getElementById (" greeting-type" );
64+ greetingType .textContent = " evening" ;
65+ ```
66+
67+ <ViewSource url = { import .meta .url } path = " _samples/good-evening" />
68+
69+ </Answer >
70+
4071## <Term >HTML 要素</Term >のスタイルを変更する
4172
4273` document.getElementById ` <Term >関数</Term >が返す<Term >オブジェクト</Term >の ` style ` <Term >プロパティ</Term >は、その要素の <Term >` style ` 属性</Term >と対応します。 ** ` style ` <Term >プロパティ</Term >に格納されている<Term >値</Term >自体も<Term >オブジェクト</Term >** となっており、その各<Term >プロパティ</Term >が CSS の<Term type = " cssProperty" >プロパティ</Term >に対応します。
@@ -53,6 +84,32 @@ element.style.backgroundColor = "red";
5384<Term >CSS</Term > の<Term type = " cssProperty" >プロパティ</Term >名である ` background-color ` は、内部にハイフンが含まれているため、` element.style.background-color ` のように指定してしまうと、ハイフンが減算<Term >演算子</Term >として解釈されてしまいます。
5485` style ` <Term >プロパティ</Term >では、<Term >CSS</Term > の<Term type = " cssProperty" >プロパティ</Term >名は<Term >キャメルケース</Term >として指定する必要があることに注意してください。
5586
87+ ### 確認問題
88+
89+ 下のような HTML ファイルがあります。
90+
91+ ``` html title="index.html"
92+ <div id =" greeting" >Hello World!</div >
93+ ```
94+
95+ 文字色が黄色、背景色が黒色で ` Hello World! ` と表示されるようにしてください。
96+
97+ ここでは CSS ファイルを作成するのではなく、JavaScript を使ってスタイルを操作してください。
98+
99+ ![ 文字色が黄色、背景色が黒色の Hello World!] ( ./yellow-hello-world.png )
100+
101+ <Answer >
102+
103+ ``` js title="script.js"
104+ const greetingElement = document .getElementById (" greeting" );
105+ greetingElement .style .color = " yellow" ;
106+ greetingElement .style .backgroundColor = " black" ;
107+ ```
108+
109+ <ViewSource url = { import .meta .url } path = " _samples/change-styles" />
110+
111+ </Answer >
112+
56113## DOM を用いて要素を追加する
57114
58115` document.createElement ` 関数は、引数に要素の種類を表す文字列を取り、その種類の新しい HTML 要素を作る関数です。
@@ -62,8 +119,8 @@ element.style.backgroundColor = "red";
62119中身のない空の要素が作成されるので、` textContent ` を ` おやつ ` に設定してみましょう。
63120
64121``` js title="script.js"
65- const newItem = document .createElement (" li" );
66- newItem .textContent = " おやつ" ;
122+ const snackElement = document .createElement (" li" );
123+ snackElement .textContent = " おやつ" ;
67124```
68125
69126そして、` 要素1.appendChild(要素2) ` とすることで、要素 1 の子要素に要素 2 を追加し、画面に表示することができます。
@@ -73,21 +130,44 @@ newItem.textContent = "おやつ";
73130<ul id =" packing-list" >
74131 <li >お弁当</li >
75132 <li >水筒</li >
76- <li >タオル</li >
77- <li >レジャーシート</li >
78133</ul >
79134```
80135
81136``` js title="script.js"
82- const newItem = document .createElement (" li" );
83- newItem .textContent = " おやつ" ;
84-
85137const packingList = document .getElementById (" packing-list" );
86- packingList .appendChild (newItem);
138+
139+ const snackElement = document .createElement (" li" );
140+ snackElement .textContent = " おやつ" ;
141+
142+ packingList .appendChild (snackElement);
87143```
88144
89145これで、既存の ` ul ` 要素の子要素に新しい ` li ` 要素が追加され、「おやつ」が加わった持ち物リストが表示されます。
90146
147+ ### 確認問題
148+
149+ 上の遠足の持ち物リストに、さらに「帽子」を追加しましょう。
150+
151+ <Answer >
152+
153+ ``` js title="script.js"
154+ const packingList = document .getElementById (" packing-list" );
155+
156+ const snackElement = document .createElement (" li" );
157+ snackElement .textContent = " おやつ" ;
158+
159+ packingList .appendChild (snackElement);
160+
161+ const capElement = document .createElement (" li" );
162+ capElement .textContent = " 帽子" ;
163+
164+ packingList .appendChild (capElement);
165+ ```
166+
167+ <ViewSource url = { import .meta .url } path = " _samples/add-element-exercise" />
168+
169+ </Answer >
170+
91171## 初級演習
92172
93173### 買い物リストの書き換え
0 commit comments