回答編集履歴
3
文言
test
CHANGED
@@ -69,3 +69,11 @@
|
|
69
69
|
```
|
70
70
|
|
71
71
|
`showing_pg()`でやることは、「入力した文字列のうち、先頭 `shownLength` 文字だけ表示する」「`showLength` を1増やす」「`showLength` が `text.length` を超えたら、繰り返しタイマーを停止する」です。`for` は不要です。
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
----
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
`async`/`await`を使った同期的な書き方や、`bind()`と`setTimeout()`を使ったグローバル変数なしの書き方もありますが、初学者向けではないので省略します。
|
2
1文字ずつ、への修正案を追加
test
CHANGED
@@ -28,4 +28,44 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
+
---
|
32
|
+
|
33
|
+
|
34
|
+
|
31
35
|
「1文字づつ表示」にもなってないですね。
|
36
|
+
|
37
|
+
```js
|
38
|
+
|
39
|
+
var count_time = setInterval(showing_pg,2000);
|
40
|
+
|
41
|
+
count_time.addEventListener("click", count_time, false);
|
42
|
+
|
43
|
+
```
|
44
|
+
|
45
|
+
`addEventListener()`を呼びたい対象はボタンのはずです。`setInterval()`から得たタイマーIDは`addEventLisetner()`という関数を持ちません。
|
46
|
+
|
47
|
+
`addEventListener()`に渡すのは実行したい関数です。`setInterval()`から得たタイマーIDを渡してはいけません。
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
まず、グローバルに `countTimer` と `shownLength` という変数を宣言しましょう。
|
52
|
+
|
53
|
+
「ボタンを押すと、…2秒ごとに先頭から…」という仕様を以下のようなコードで実現します。
|
54
|
+
|
55
|
+
```js
|
56
|
+
|
57
|
+
document.getElementById("button").addEventListener("click", () => {
|
58
|
+
|
59
|
+
// 2秒ことに
|
60
|
+
|
61
|
+
countTimer = setInterval(showing_pg, 2000);
|
62
|
+
|
63
|
+
// 次は先頭から1文字だけ表示する
|
64
|
+
|
65
|
+
shownLength = 1;
|
66
|
+
|
67
|
+
}, false);
|
68
|
+
|
69
|
+
```
|
70
|
+
|
71
|
+
`showing_pg()`でやることは、「入力した文字列のうち、先頭 `shownLength` 文字だけ表示する」「`showLength` を1増やす」「`showLength` が `text.length` を超えたら、繰り返しタイマーを停止する」です。`for` は不要です。
|
1
typo
test
CHANGED
@@ -10,6 +10,10 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
+
----
|
14
|
+
|
15
|
+
|
16
|
+
|
13
17
|
ついでですが、
|
14
18
|
|
15
19
|
```javascript
|
@@ -18,7 +22,7 @@
|
|
18
22
|
|
19
23
|
```
|
20
24
|
|
21
|
-
これだと、`text` は文字列ではなく `null` になると思います。HTML
|
25
|
+
これだと、`text` は文字列ではなく `null` になると思います。HTML 中に `id="text.value"`を持つ要素がないので。
|
22
26
|
|
23
27
|
欲しい物は `document.getElementById("text").value` ではないでしょうか。
|
24
28
|
|