回答編集履歴
3
改訂
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
|
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
追記
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
追記
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;``
|