回答編集履歴

3

文言

2021/03/11 00:50

投稿

int32_t
int32_t

スコア21679

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文字ずつ、への修正案を追加

2021/03/11 00:50

投稿

int32_t
int32_t

スコア21679

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

2021/03/11 00:13

投稿

int32_t
int32_t

スコア21679

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に `id="text.value"`を持つ要素がないので。
25
+ これだと、`text` は文字列ではなく `null` になると思います。HTMLに `id="text.value"`を持つ要素がないので。
22
26
 
23
27
  欲しい物は `document.getElementById("text").value` ではないでしょうか。
24
28