Skip to content

Commit a1e7add

Browse files
authored
DOM の章の確認問題を追加、内容のアップデート (#725)
1 parent 188b289 commit a1e7add

File tree

10 files changed

+149
-18
lines changed

10 files changed

+149
-18
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!doctype html>
2+
<html lang="ja">
3+
<head>
4+
<meta charset="utf-8" />
5+
<title>Title</title>
6+
</head>
7+
<body>
8+
<ul id="packing-list">
9+
<li>お弁当</li>
10+
<li>水筒</li>
11+
</ul>
12+
<script src="./script.js"></script>
13+
</body>
14+
</html>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const packingList = document.getElementById("packing-list");
2+
3+
const snackElement = document.createElement("li");
4+
snackElement.textContent = "おやつ";
5+
6+
packingList.appendChild(snackElement);
7+
8+
const capElement = document.createElement("li");
9+
capElement.textContent = "帽子";
10+
11+
packingList.appendChild(capElement);

docs/1-trial-session/13-dom/_samples/add-element/index.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
<ul id="packing-list">
99
<li>お弁当</li>
1010
<li>水筒</li>
11-
<li>タオル</li>
12-
<li>レジャーシート</li>
1311
</ul>
1412
<script src="./script.js"></script>
1513
</body>
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
const newItem = document.createElement("li");
2-
newItem.textContent = "おやつ";
3-
41
const packingList = document.getElementById("packing-list");
5-
packingList.appendChild(newItem);
2+
3+
const snackElement = document.createElement("li");
4+
snackElement.textContent = "おやつ";
5+
6+
packingList.appendChild(snackElement);
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!doctype html>
2+
<html lang="ja">
3+
<head>
4+
<meta charset="utf-8" />
5+
<title>Title</title>
6+
</head>
7+
<body>
8+
<div id="greeting">Hello World!</div>
9+
<script src="./script.js"></script>
10+
</body>
11+
</html>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const greetingElement = document.getElementById("greeting");
2+
greetingElement.style.color = "yellow";
3+
greetingElement.style.backgroundColor = "black";
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!doctype html>
2+
<html lang="ja">
3+
<head>
4+
<meta charset="utf-8" />
5+
<title>Title</title>
6+
</head>
7+
<body>
8+
<div>Good <strong id="greeting-type">morning</strong>!</div>
9+
<script src="./script.js"></script>
10+
</body>
11+
</html>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
const greetingType = document.getElementById("greeting-type");
2+
greetingType.textContent = "evening";

docs/1-trial-session/13-dom/index.mdx

Lines changed: 92 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
85137
const 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
### 買い物リストの書き換え
12 KB
Loading

0 commit comments

Comments
 (0)