回答編集履歴

6

テキスト修正

2018/10/22 13:11

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -66,11 +66,11 @@
66
66
 
67
67
 
68
68
 
69
- #### 追記
70
-
71
-
72
-
73
- まとめるオブジェクトとして、[Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使うと、上記のコードで [Array.prototype.reduce](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce) に渡す関数を、以下のように短く書けます。
69
+ #### 追記1
70
+
71
+
72
+
73
+ まとめるオブジェクトとして、[Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使うと、上記のコードで [Array.prototype.reduce](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce) に渡す関数を、以下のように少し短く書けます。
74
74
 
75
75
 
76
76
 

5

テキスト修正

2018/10/22 13:11

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -143,3 +143,67 @@
143
143
 
144
144
 
145
145
  ただし、上記のようにすると「いちおう出来ます」というだけで、グローバルオブジェクト(ブラウザでは `window`)のプロパティに、値を保存をしておくようなことは、あまりやりません。
146
+
147
+
148
+
149
+ #### 追記3
150
+
151
+
152
+
153
+ 蛇足ではありますが、もうひとつお節介ついでに、「こうすればまとめるプログラムを書かなくても、最初からまとまっているといえるのでは?」という例を挙げます。
154
+
155
+
156
+
157
+ 以下のように`<input>`要素を `<form>` でくくっておき、`<input>` には id ではなく name 属性を付加しておきます。
158
+
159
+
160
+
161
+ ```html
162
+
163
+ <form>
164
+
165
+ <input name="num1" value="10" /><br />
166
+
167
+ <input name="num2" value="11" /><br />
168
+
169
+ <input name="num3" value="12" /><br />
170
+
171
+ <input name="num4" value="13" /><br />
172
+
173
+ <input name="num5" value="14" /><br />
174
+
175
+ <input name="num6" value="15" /><br />
176
+
177
+ <input name="num7" value="16" /><br />
178
+
179
+ <input name="num8" value="17" /><br />
180
+
181
+ <input name="num9" value="18" /><br />
182
+
183
+ <input name="num10" value="19" />
184
+
185
+ </form>
186
+
187
+ ```
188
+
189
+
190
+
191
+ 上記のようにすると、以下で値が取り出せます。
192
+
193
+
194
+
195
+ ```javascript
196
+
197
+ const f = document.forms[0];
198
+
199
+
200
+
201
+ console.log(f.num1.value);  // => 10
202
+
203
+ console.log(f.num10.value); // => 19
204
+
205
+ ```
206
+
207
+
208
+
209
+ - 上記のサンプル: [https://jsfiddle.net/jun68ykt/1mhcj7k3/3/](https://jsfiddle.net/jun68ykt/1mhcj7k3/3/)

4

テキスト修正

2018/10/22 12:47

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -98,7 +98,7 @@
98
98
 
99
99
 
100
100
 
101
- 質問への追記・修正に
101
+ 質問への追記・修正のご返信
102
102
 
103
103
 
104
104
 

3

テキスト修正

2018/10/22 12:27

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -91,3 +91,55 @@
91
91
 
92
92
 
93
93
  - 上記のコードのサンプル: [https://jsfiddle.net/jun68ykt/g4hk9t81/1/](https://jsfiddle.net/jun68ykt/g4hk9t81/1/)
94
+
95
+
96
+
97
+ #### 追記2
98
+
99
+
100
+
101
+ 質問への追記・修正にて
102
+
103
+
104
+
105
+ > mi_mi 2018/10/22 16:38
106
+
107
+ > ...
108
+
109
+ > var num1v = document.getElementById("num1").valueの num1vの部分も使用できるようにしたいです。 例えばconsole.log(num1v)で値が表示されるような。
110
+
111
+
112
+
113
+ とありましたが、以下のようにすると、 `console.log(num1v);` で `id="num1"` の要素の value が表示されるようにできます。
114
+
115
+
116
+
117
+ ```javascript
118
+
119
+ Array.prototype.forEach.call(
120
+
121
+ document.getElementsByTagName('input'),
122
+
123
+ input => {
124
+
125
+ window[`${input.id}v`] = input.value;
126
+
127
+ }
128
+
129
+ );
130
+
131
+
132
+
133
+ console.log(num1v);
134
+
135
+ console.log(num10v);
136
+
137
+ ```
138
+
139
+
140
+
141
+ - 上記コードのサンプル: [https://jsfiddle.net/jun68ykt/xhnt7cp9/3/](https://jsfiddle.net/jun68ykt/xhnt7cp9/3/)
142
+
143
+
144
+
145
+ ただし、上記のようにすると「いちおう出来ます」というだけで、グローバルオブジェクト(ブラウザでは `window`)のプロパティに、値を保存をしておくようなことは、あまりやりません。

2

テキスト修正

2018/10/22 12:20

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -63,3 +63,31 @@
63
63
 
64
64
 
65
65
  参考になれば幸いです。
66
+
67
+
68
+
69
+ #### 追記
70
+
71
+
72
+
73
+ まとめるオブジェクトとして、[Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map) を使うと、上記のコードで [Array.prototype.reduce](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce) に渡す関数を、以下のように短く書けます。
74
+
75
+
76
+
77
+ ```javascript
78
+
79
+ const values = Array.prototype.reduce.call(
80
+
81
+ document.getElementsByTagName('input'),
82
+
83
+ (m, input) => m.set(input.id, input.value),
84
+
85
+ new Map()
86
+
87
+ );
88
+
89
+ ```
90
+
91
+
92
+
93
+ - 上記のコードのサンプル: [https://jsfiddle.net/jun68ykt/g4hk9t81/1/](https://jsfiddle.net/jun68ykt/g4hk9t81/1/)

1

テキスト修正

2018/10/22 08:55

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  ```javascript
30
30
 
31
- var values = Array.prototype.reduce.call(
31
+ const values = Array.prototype.reduce.call(
32
32
 
33
33
  document.getElementsByTagName('input'),
34
34
 
@@ -58,7 +58,7 @@
58
58
 
59
59
 
60
60
 
61
- - [https://jsfiddle.net/jun68ykt/mbz8x97g/2/](https://jsfiddle.net/jun68ykt/mbz8x97g/2/)
61
+ - [https://jsfiddle.net/jun68ykt/mbz8x97g/3/](https://jsfiddle.net/jun68ykt/mbz8x97g/3/)
62
62
 
63
63
 
64
64