teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

改訂

2020/10/16 05:52

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -1,26 +1,27 @@
1
1
  > 全く動きません.
2
2
 
3
+ kaibun() 関数の最初でエラーとなるので、(以降の処理に進まず)**全く動かない**結果になっています。
4
+
3
5
  HTML をJavaScriptで扱う場合、マークアップ構造とDOMのAPIとが密接に関係しています。
4
-
5
6
  ご質問のコードで再確認すべき点は大きく2つです。
6
7
 
7
- **HTMLInputElement に無いプロパティを参照しようとしている**
8
+ **1) HTMLInputElement に無いプロパティを参照しようとしている**
8
9
 
9
10
  ```diff
10
11
  - let l=document.getElementById("source").length;
11
12
  + let l=document.getElementById("source").value.length;
12
13
  - let n=document.getElementById("source").charAt(N);
13
- + let l=document.getElementById("source").value.charAt(N);
14
+ + let n=document.getElementById("source").value.charAt(N);
14
15
  ```
15
- (追記)kaibun() 関数の最初でエラーとなるので、(以降の処理に進まず)**全く動かない**。
16
16
 
17
+ **2) 検証に至っていないステートメントがある**
17
18
 
18
- **検証に至っていないステートメントがある**
19
-
20
19
  ``document.getElementById("total").textContent = result;``
21
20
  1. ``total`` という id属性値 が HTML内に確認できない
22
21
  2. ``result`` という 変数は JavaScriptコード内で宣言されていない。
23
22
 
23
+ 全く動かなかったために、検証できていなかったものと思います。
24
+
24
25
  ----
25
26
 
26
27
  操作対象のhtml要素は、APIを頻繁に使うと見通しが悪くなるので、変数に格納しておく方法もあります。

2

追記

2020/10/16 05:52

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -34,11 +34,14 @@
34
34
 
35
35
  // 文字列処理(回文作成)
36
36
  let val = src.value; // 入力値(回文の前半)
37
+ // 回文の後半を作成
37
- let tmp = val.split("").reverse() // 回文の半を 一旦、配列化して反転
38
+ let tmp = val.split("").reverse() // 回文の半を 一旦、配列化して反転
38
39
  .slice(1) // 最初の1文字は前半と重複する文字なので2文字目以降を取り出す
39
40
  .join(""); // 配列を文字列に戻す
40
41
 
41
42
  dst.textContent = val + tmp;
42
43
  }
43
44
  </script>
44
- ```
45
+ ```
46
+
47
+ CODEPEN [動くサンプル](https://codepen.io/AkitoshiManabe/pen/ExyKjdQ)

1

追記

2020/10/16 05:46

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -12,7 +12,9 @@
12
12
  - let n=document.getElementById("source").charAt(N);
13
13
  + let l=document.getElementById("source").value.charAt(N);
14
14
  ```
15
+ (追記)kaibun() 関数の最初でエラーとなるので、(以降の処理に進まず)**全く動かない**。
15
16
 
17
+
16
18
  **検証に至っていないステートメントがある**
17
19
 
18
20
  ``document.getElementById("total").textContent = result;``