質問編集履歴
14
タグの変更
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
13
全体の修正: 説明
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
|
1
|
+
0. HTMLCollectionに含まれる要素の情報を文字列として取得する方法はありますか?
|
2
|
+
|
3
|
+
0. ```UL.item(1)```が[object HTMLUListElement]を返さないのはなぜですか?
|
4
|
+
|
5
|
+
0. namedItem()によって取得された値についてalert()が機能しないのはなぜですか?
|
6
|
+
|
7
|
+
0. ```UL.namedItem(next)```と```UL.namedItem("back")```の期待値はなんですか ?
|
2
8
|
|
3
9
|
```html
|
4
10
|
|
@@ -35,279 +41,3 @@
|
|
35
41
|
}
|
36
42
|
|
37
43
|
```
|
38
|
-
|
39
|
-
## Action & Question
|
40
|
-
|
41
|
-
### HTMLCollection & HTMLUListElement
|
42
|
-
|
43
|
-
内容についてより詳細な情報を確認する方法はありますか?
|
44
|
-
|
45
|
-
たとえば、それを配列として取得することはできませんか?
|
46
|
-
|
47
|
-
### HTMLCollection.item()
|
48
|
-
|
49
|
-
以下の理由から、不適切な記述が含まれる可能性を懸念します。
|
50
|
-
|
51
|
-
[MDN Web Docs](https://developer.mozilla.org/ja/) says:
|
52
|
-
|
53
|
-
> Returns null if the index is out of range
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
Web technology for developers> Web APIs> HTML Collection
|
58
|
-
|
59
|
-
### HTMLCollection.namedItem()
|
60
|
-
|
61
|
-
以下の理由から、不適切な記述が含まれる可能性を懸念します。
|
62
|
-
|
63
|
-
- アラートは応答しません。
|
64
|
-
|
65
|
-
## 編集
|
66
|
-
|
67
|
-
### No.1:比較のために作成されました
|
68
|
-
|
69
|
-
```script
|
70
|
-
|
71
|
-
function buttonClick() {const ps = document.getElementById("ps").children;
|
72
|
-
|
73
|
-
alert("ps_children:" + ps);//ps_children:[object HTMLCollection]
|
74
|
-
|
75
|
-
const ps_length = ps.length;
|
76
|
-
|
77
|
-
alert("ps.length:"+ length);//ps.length:0
|
78
|
-
|
79
|
-
const p0_item = ps.item(0);
|
80
|
-
|
81
|
-
const p1_item = ps.item(1);
|
82
|
-
|
83
|
-
const p2_item = ps.item(2);
|
84
|
-
|
85
|
-
alert("ps.item(0):"+ p0_item);//ps.item(0):[object HTMLParagraphElement]
|
86
|
-
|
87
|
-
alert("ps.item(1):"+ p1_item);//ps.item(0):[object HTMLParagraphElement]
|
88
|
-
|
89
|
-
alert("ps.item(2):"+ p2_item);//null
|
90
|
-
|
91
|
-
const p1_namedItem = ps.namedItem(next);
|
92
|
-
|
93
|
-
const p2_namedItem = ps.namedItem("back");
|
94
|
-
|
95
|
-
alert("ps.namedItem(next):" + p1_namedItem);
|
96
|
-
|
97
|
-
alert("ps.namedItem("back"):" + p2_namedItem);
|
98
|
-
|
99
|
-
```
|
100
|
-
|
101
|
-
```html
|
102
|
-
|
103
|
-
<button type="button" onclick="buttonClick()">Button</button>
|
104
|
-
|
105
|
-
<div id="ps">
|
106
|
-
|
107
|
-
<p name = "next">p1</p>
|
108
|
-
|
109
|
-
<p name = "back">p2</p>
|
110
|
-
|
111
|
-
</div>
|
112
|
-
|
113
|
-
```
|
114
|
-
|
115
|
-
### No.2: maisumakun(0)は次のように考えます:
|
116
|
-
|
117
|
-
- HTMLCollectionやHTMLUListElementは、Methodや添字参照を使わない限り、[object ~]としてしか取得できません(ただし、添字参照のイメージは共有されていないことに注意してください)。
|
118
|
-
|
119
|
-
- HTMLCollection.item()は、item(0)以外でnullを返すためのMethodです。それは、"index is out of range"をチェックするMethodと言い換えることができる可能性があります。
|
120
|
-
|
121
|
-
- HTMLCollection.namedItem()は、読み取ったデータは視覚的に認識できません。
|
122
|
-
|
123
|
-
なお、上記は再現結果が同じであることを前提とした判断です。 maisumakunが異なる結果を得る場合、結果に関する情報を共有する必要があります。
|
124
|
-
|
125
|
-
## No.3: Google Apps Script
|
126
|
-
|
127
|
-
- 関数の実行によってconsole.logの結果をチェックする方法を確認します。
|
128
|
-
|
129
|
-
- alertとconsole.logの結果の間に大きな違いがあるかどうかを確認します。
|
130
|
-
|
131
|
-
- 関数の実行以外によってconsole.logをチェックする方法を確認します。
|
132
|
-
|
133
|
-
私はすでにそれを経験しているので、私はこの方法に固執するのをやめるべき時があることを知っています。 解決の可能性が低いと判断された場合、このコードは完成形ですが、それは私の本来の目的を果たしませんでした。
|
134
|
-
|
135
|
-
### No.4: onclick= <? buttonClick() ?>が動作することを確認しました
|
136
|
-
|
137
|
-
```script
|
138
|
-
|
139
|
-
function buttonClick(){
|
140
|
-
|
141
|
-
const ssa = SpreadsheetApp.getActiveSpreadsheet();
|
142
|
-
|
143
|
-
var ss = ssa.getActiveSheet();
|
144
|
-
|
145
|
-
ss.getRange(1,1).setValue("Button");
|
146
|
-
|
147
|
-
}
|
148
|
-
|
149
|
-
```
|
150
|
-
|
151
|
-
```html
|
152
|
-
|
153
|
-
<button type="button" onclick= <? buttonClick() ?> >Button</button>
|
154
|
-
|
155
|
-
```
|
156
|
-
|
157
|
-
次のことを回避する方法を見つけられていないので、問題はまだ解決されていません。
|
158
|
-
|
159
|
-
> document is not defined
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
### No.5: HTMLCollection.item()とchildrenに関する疑問解決
|
164
|
-
|
165
|
-
maisumakun said:
|
166
|
-
|
167
|
-
> const UL = document.getElementById("UL").children;」で取得できるのは、あくまで<div id="UL">の子供(<ul>が1つ)のHTMLCollectionです。<ul>の子供ではありません。
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
#### Code
|
172
|
-
|
173
|
-
|document.getElementById("UL")|<div id="UL">~ </div>|HTMLDiv__Element__|
|
174
|
-
|
175
|
-
|:--|:--:|--:|
|
176
|
-
|
177
|
-
|document.getElementById("UL").children|<ul>~</ul>※|HTMLCollection|
|
178
|
-
|
179
|
-
|ps.item(0)|<ul>~ </ul>|HTMLUList__Element__|
|
180
|
-
|
181
|
-
|ps.item(1)|-|null|
|
182
|
-
|
183
|
-
|ps.item(2)|-|null|
|
184
|
-
|
185
|
-
#### 編集>No.1:比較のために作成されました
|
186
|
-
|
187
|
-
|document.getElementById("ps")|<div id="ps">~ </div>|HTMLDiv__Element__|
|
188
|
-
|
189
|
-
|:--|:--:|--:|
|
190
|
-
|
191
|
-
|document.getElementById("ps").children|<p name = "next">~</p>,<p name = "back">~</p>※|HTMLCollection|
|
192
|
-
|
193
|
-
|ps.item(0)|<p name = "next">~</p>|HTMLParagraph__Element__|
|
194
|
-
|
195
|
-
|ps.item(1)|<p name = "back">~</p>|HTMLParagraph__Element__|
|
196
|
-
|
197
|
-
|ps.item(2)|-|null|
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
※推測
|
202
|
-
|
203
|
-
#### 理解を助けた資料
|
204
|
-
|
205
|
-
Syncer(https://syncer.jp/)「[Element.children- 全ての子要素を取得する](https://syncer.jp/javascript-reference/element/children)」
|
206
|
-
|
207
|
-
###No.6: No.5の表は訂正が予定されています
|
208
|
-
|
209
|
-
###No.7: No.5の表を訂正
|
210
|
-
|
211
|
-
- document.getElementById()の値の追加
|
212
|
-
|
213
|
-
- HTMLCollectionのhtml対応部分の修正
|
214
|
-
|
215
|
-
- 表記の統一のための修正
|
216
|
-
|
217
|
-
### No.8: lengthに関する疑問の解決
|
218
|
-
|
219
|
-
No.1のコード、script4行目のアラートの表示内容に疑問がありましたが、同行に存在した記述ミスが原因でした。 同じ方法を使用して再度テストした結果、HTMLUListElementによるHTMLCollection.lengthの値は1、HTMLParagraphElementによるHTMLCollection.lengthの値は2でした。この結果ならば、私には疑問は存在しません。
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
以下の資料は、この問題の解決策を探すために参照されましたが、原因に該当しませんでした。 ただし、質問に関連する内容において認識に誤りが残る情報に触れているようですので、付記します。
|
224
|
-
|
225
|
-
WebTerminal(https://web-terminal.blogspot.com/)「[実はJavaScriptのlengthプロパティは配列要素数ではありません](https://web-terminal.blogspot.com/2012/11/javascriptlength.html)」
|
226
|
-
|
227
|
-
原因とは直接関係がなかったため、内容に関する詳細な調査は行われていません。
|
228
|
-
|
229
|
-
### No.9: 添字参照に関する疑問の解決(仮)
|
230
|
-
|
231
|
-
maisumakun said:
|
232
|
-
|
233
|
-
> HTMLCollectionのままでも、添字参照やlengthの取得は可能です。
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
No.8に記載されている資料および以下の資料を参照する限り、添字参照は、配列(またはそれに近いもの)の要素の一部を抽出する行為を指していると推測されます。この質問では、より詳細な理解は優先事項ではないように思われたので、それは今は脇に置きます。
|
238
|
-
|
239
|
-
- MDN Web Docs(https://developer.mozilla.org/ja/)「[Array](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array)」
|
240
|
-
|
241
|
-
### No.10: namedItem()に関する疑問解決(仮)
|
242
|
-
|
243
|
-
そもそもアラートが効かなかった問題については、No.11のとおりです。
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
Codeのコードを次のように修正すると、HTMLUListElementを取得可能です。
|
248
|
-
|
249
|
-
```script
|
250
|
-
|
251
|
-
const li1_namedItem = UL.namedItem("test");
|
252
|
-
|
253
|
-
```
|
254
|
-
|
255
|
-
```html
|
256
|
-
|
257
|
-
<ul name ="test">
|
258
|
-
|
259
|
-
```
|
260
|
-
|
261
|
-
この結果から、少なくとも返される値に関する問題の原因は、このMethodを使用して実際に参照されるべき要素にnameが設定されていなかったことが原因だと推測されます。
|
262
|
-
|
263
|
-
###No.11: namedItem()に関する未解決の疑問
|
264
|
-
|
265
|
-
これらの疑問は、一定期間にわたって解決に向かう進展がなければ、おそらく追究されずに放置されるでしょう。
|
266
|
-
|
267
|
-
#### namedItem()のアラートは、特定の条件下では機能しません
|
268
|
-
|
269
|
-
Codeのコードをそのまま実行しても、namedItem()のアラートが機能しません。 しかし、このコードからnamedItem()に関係のない部分を省くと、そのアラートは正常に機能します(そして、そのコードをNo.10の編集を加えずにに実行すると、値としてnullが返されます)。
|
270
|
-
|
271
|
-
#### namedItem()のHTMLParagraphElementを取得できません
|
272
|
-
|
273
|
-
No.10の理解に基づいて、No.1のコードで同じ内容を再現しようとしましたが、失敗しました。
|
274
|
-
|
275
|
-
```html
|
276
|
-
|
277
|
-
<!DOCTYPE html><html>
|
278
|
-
|
279
|
-
<head><script>
|
280
|
-
|
281
|
-
function buttonClick() {
|
282
|
-
|
283
|
-
const ps = document.getElementById("ps").children;
|
284
|
-
|
285
|
-
const p1_namedItem = ps.namedItem("next");
|
286
|
-
|
287
|
-
const p2_namedItem = ps.namedItem("back");
|
288
|
-
|
289
|
-
alert("ps.namedItem("next"):" + p1_namedItem);
|
290
|
-
|
291
|
-
alert("ps.namedItem("back"):" + p2_namedItem);
|
292
|
-
|
293
|
-
}
|
294
|
-
|
295
|
-
</script></head>
|
296
|
-
|
297
|
-
<body>
|
298
|
-
|
299
|
-
<button type="button" onclick= "buttonClick()">Button</button>
|
300
|
-
|
301
|
-
<div id = "ps">
|
302
|
-
|
303
|
-
<p name = "next">p1</p>
|
304
|
-
|
305
|
-
<p name = "back">p2</p>
|
306
|
-
|
307
|
-
</div>
|
308
|
-
|
309
|
-
</body>
|
310
|
-
|
311
|
-
</html>
|
312
|
-
|
313
|
-
```
|
12
全体の修正: コード
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,39 +2,293 @@
|
|
2
2
|
|
3
3
|
```html
|
4
4
|
|
5
|
+
<button type="button" onclick="buttonClick()">Button</button>
|
6
|
+
|
7
|
+
<div id="UL">
|
8
|
+
|
9
|
+
<ul>
|
10
|
+
|
11
|
+
<li name = "next">li1</li>
|
12
|
+
|
13
|
+
<li name = "back">li2</li>
|
14
|
+
|
15
|
+
</ul>
|
16
|
+
|
17
|
+
</div>
|
18
|
+
|
19
|
+
```
|
20
|
+
|
21
|
+
```js
|
22
|
+
|
23
|
+
function buttonClick() {
|
24
|
+
|
25
|
+
const UL = document.getElementById("UL").children;
|
26
|
+
|
27
|
+
alert(`UL: ${UL}`);// [object HTMLCollection]
|
28
|
+
|
29
|
+
for(let i=0;i<3;i=i+1){alert(`UL.item(${i}): ${UL.item(i)}`);}//[object HTMLUListElement], null, null
|
30
|
+
|
31
|
+
alert(`UL.namedItem(next): ${UL.namedItem(next)}`);//next is not defined
|
32
|
+
|
33
|
+
alert(`UL.namedItem("back"): ${UL.namedItem("back")}`);
|
34
|
+
|
35
|
+
}
|
36
|
+
|
37
|
+
```
|
38
|
+
|
39
|
+
## Action & Question
|
40
|
+
|
41
|
+
### HTMLCollection & HTMLUListElement
|
42
|
+
|
43
|
+
内容についてより詳細な情報を確認する方法はありますか?
|
44
|
+
|
45
|
+
たとえば、それを配列として取得することはできませんか?
|
46
|
+
|
47
|
+
### HTMLCollection.item()
|
48
|
+
|
49
|
+
以下の理由から、不適切な記述が含まれる可能性を懸念します。
|
50
|
+
|
51
|
+
[MDN Web Docs](https://developer.mozilla.org/ja/) says:
|
52
|
+
|
53
|
+
> Returns null if the index is out of range
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
Web technology for developers> Web APIs> HTML Collection
|
58
|
+
|
59
|
+
### HTMLCollection.namedItem()
|
60
|
+
|
61
|
+
以下の理由から、不適切な記述が含まれる可能性を懸念します。
|
62
|
+
|
63
|
+
- アラートは応答しません。
|
64
|
+
|
65
|
+
## 編集
|
66
|
+
|
67
|
+
### No.1:比較のために作成されました
|
68
|
+
|
69
|
+
```script
|
70
|
+
|
71
|
+
function buttonClick() {const ps = document.getElementById("ps").children;
|
72
|
+
|
73
|
+
alert("ps_children:" + ps);//ps_children:[object HTMLCollection]
|
74
|
+
|
75
|
+
const ps_length = ps.length;
|
76
|
+
|
77
|
+
alert("ps.length:"+ length);//ps.length:0
|
78
|
+
|
79
|
+
const p0_item = ps.item(0);
|
80
|
+
|
81
|
+
const p1_item = ps.item(1);
|
82
|
+
|
83
|
+
const p2_item = ps.item(2);
|
84
|
+
|
85
|
+
alert("ps.item(0):"+ p0_item);//ps.item(0):[object HTMLParagraphElement]
|
86
|
+
|
87
|
+
alert("ps.item(1):"+ p1_item);//ps.item(0):[object HTMLParagraphElement]
|
88
|
+
|
89
|
+
alert("ps.item(2):"+ p2_item);//null
|
90
|
+
|
91
|
+
const p1_namedItem = ps.namedItem(next);
|
92
|
+
|
93
|
+
const p2_namedItem = ps.namedItem("back");
|
94
|
+
|
95
|
+
alert("ps.namedItem(next):" + p1_namedItem);
|
96
|
+
|
97
|
+
alert("ps.namedItem("back"):" + p2_namedItem);
|
98
|
+
|
99
|
+
```
|
100
|
+
|
101
|
+
```html
|
102
|
+
|
103
|
+
<button type="button" onclick="buttonClick()">Button</button>
|
104
|
+
|
105
|
+
<div id="ps">
|
106
|
+
|
107
|
+
<p name = "next">p1</p>
|
108
|
+
|
109
|
+
<p name = "back">p2</p>
|
110
|
+
|
111
|
+
</div>
|
112
|
+
|
113
|
+
```
|
114
|
+
|
115
|
+
### No.2: maisumakun(0)は次のように考えます:
|
116
|
+
|
117
|
+
- HTMLCollectionやHTMLUListElementは、Methodや添字参照を使わない限り、[object ~]としてしか取得できません(ただし、添字参照のイメージは共有されていないことに注意してください)。
|
118
|
+
|
119
|
+
- HTMLCollection.item()は、item(0)以外でnullを返すためのMethodです。それは、"index is out of range"をチェックするMethodと言い換えることができる可能性があります。
|
120
|
+
|
121
|
+
- HTMLCollection.namedItem()は、読み取ったデータは視覚的に認識できません。
|
122
|
+
|
123
|
+
なお、上記は再現結果が同じであることを前提とした判断です。 maisumakunが異なる結果を得る場合、結果に関する情報を共有する必要があります。
|
124
|
+
|
125
|
+
## No.3: Google Apps Script
|
126
|
+
|
127
|
+
- 関数の実行によってconsole.logの結果をチェックする方法を確認します。
|
128
|
+
|
129
|
+
- alertとconsole.logの結果の間に大きな違いがあるかどうかを確認します。
|
130
|
+
|
131
|
+
- 関数の実行以外によってconsole.logをチェックする方法を確認します。
|
132
|
+
|
133
|
+
私はすでにそれを経験しているので、私はこの方法に固執するのをやめるべき時があることを知っています。 解決の可能性が低いと判断された場合、このコードは完成形ですが、それは私の本来の目的を果たしませんでした。
|
134
|
+
|
135
|
+
### No.4: onclick= <? buttonClick() ?>が動作することを確認しました
|
136
|
+
|
137
|
+
```script
|
138
|
+
|
139
|
+
function buttonClick(){
|
140
|
+
|
141
|
+
const ssa = SpreadsheetApp.getActiveSpreadsheet();
|
142
|
+
|
143
|
+
var ss = ssa.getActiveSheet();
|
144
|
+
|
145
|
+
ss.getRange(1,1).setValue("Button");
|
146
|
+
|
147
|
+
}
|
148
|
+
|
149
|
+
```
|
150
|
+
|
151
|
+
```html
|
152
|
+
|
153
|
+
<button type="button" onclick= <? buttonClick() ?> >Button</button>
|
154
|
+
|
155
|
+
```
|
156
|
+
|
157
|
+
次のことを回避する方法を見つけられていないので、問題はまだ解決されていません。
|
158
|
+
|
159
|
+
> document is not defined
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
### No.5: HTMLCollection.item()とchildrenに関する疑問解決
|
164
|
+
|
165
|
+
maisumakun said:
|
166
|
+
|
167
|
+
> const UL = document.getElementById("UL").children;」で取得できるのは、あくまで<div id="UL">の子供(<ul>が1つ)のHTMLCollectionです。<ul>の子供ではありません。
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
#### Code
|
172
|
+
|
173
|
+
|document.getElementById("UL")|<div id="UL">~ </div>|HTMLDiv__Element__|
|
174
|
+
|
175
|
+
|:--|:--:|--:|
|
176
|
+
|
177
|
+
|document.getElementById("UL").children|<ul>~</ul>※|HTMLCollection|
|
178
|
+
|
179
|
+
|ps.item(0)|<ul>~ </ul>|HTMLUList__Element__|
|
180
|
+
|
181
|
+
|ps.item(1)|-|null|
|
182
|
+
|
183
|
+
|ps.item(2)|-|null|
|
184
|
+
|
185
|
+
#### 編集>No.1:比較のために作成されました
|
186
|
+
|
187
|
+
|document.getElementById("ps")|<div id="ps">~ </div>|HTMLDiv__Element__|
|
188
|
+
|
189
|
+
|:--|:--:|--:|
|
190
|
+
|
191
|
+
|document.getElementById("ps").children|<p name = "next">~</p>,<p name = "back">~</p>※|HTMLCollection|
|
192
|
+
|
193
|
+
|ps.item(0)|<p name = "next">~</p>|HTMLParagraph__Element__|
|
194
|
+
|
195
|
+
|ps.item(1)|<p name = "back">~</p>|HTMLParagraph__Element__|
|
196
|
+
|
197
|
+
|ps.item(2)|-|null|
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
※推測
|
202
|
+
|
203
|
+
#### 理解を助けた資料
|
204
|
+
|
205
|
+
Syncer(https://syncer.jp/)「[Element.children- 全ての子要素を取得する](https://syncer.jp/javascript-reference/element/children)」
|
206
|
+
|
207
|
+
###No.6: No.5の表は訂正が予定されています
|
208
|
+
|
209
|
+
###No.7: No.5の表を訂正
|
210
|
+
|
211
|
+
- document.getElementById()の値の追加
|
212
|
+
|
213
|
+
- HTMLCollectionのhtml対応部分の修正
|
214
|
+
|
215
|
+
- 表記の統一のための修正
|
216
|
+
|
217
|
+
### No.8: lengthに関する疑問の解決
|
218
|
+
|
219
|
+
No.1のコード、script4行目のアラートの表示内容に疑問がありましたが、同行に存在した記述ミスが原因でした。 同じ方法を使用して再度テストした結果、HTMLUListElementによるHTMLCollection.lengthの値は1、HTMLParagraphElementによるHTMLCollection.lengthの値は2でした。この結果ならば、私には疑問は存在しません。
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
以下の資料は、この問題の解決策を探すために参照されましたが、原因に該当しませんでした。 ただし、質問に関連する内容において認識に誤りが残る情報に触れているようですので、付記します。
|
224
|
+
|
225
|
+
WebTerminal(https://web-terminal.blogspot.com/)「[実はJavaScriptのlengthプロパティは配列要素数ではありません](https://web-terminal.blogspot.com/2012/11/javascriptlength.html)」
|
226
|
+
|
227
|
+
原因とは直接関係がなかったため、内容に関する詳細な調査は行われていません。
|
228
|
+
|
229
|
+
### No.9: 添字参照に関する疑問の解決(仮)
|
230
|
+
|
231
|
+
maisumakun said:
|
232
|
+
|
233
|
+
> HTMLCollectionのままでも、添字参照やlengthの取得は可能です。
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
No.8に記載されている資料および以下の資料を参照する限り、添字参照は、配列(またはそれに近いもの)の要素の一部を抽出する行為を指していると推測されます。この質問では、より詳細な理解は優先事項ではないように思われたので、それは今は脇に置きます。
|
238
|
+
|
239
|
+
- MDN Web Docs(https://developer.mozilla.org/ja/)「[Array](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array)」
|
240
|
+
|
241
|
+
### No.10: namedItem()に関する疑問解決(仮)
|
242
|
+
|
243
|
+
そもそもアラートが効かなかった問題については、No.11のとおりです。
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
Codeのコードを次のように修正すると、HTMLUListElementを取得可能です。
|
248
|
+
|
249
|
+
```script
|
250
|
+
|
251
|
+
const li1_namedItem = UL.namedItem("test");
|
252
|
+
|
253
|
+
```
|
254
|
+
|
255
|
+
```html
|
256
|
+
|
257
|
+
<ul name ="test">
|
258
|
+
|
259
|
+
```
|
260
|
+
|
261
|
+
この結果から、少なくとも返される値に関する問題の原因は、このMethodを使用して実際に参照されるべき要素にnameが設定されていなかったことが原因だと推測されます。
|
262
|
+
|
263
|
+
###No.11: namedItem()に関する未解決の疑問
|
264
|
+
|
265
|
+
これらの疑問は、一定期間にわたって解決に向かう進展がなければ、おそらく追究されずに放置されるでしょう。
|
266
|
+
|
267
|
+
#### namedItem()のアラートは、特定の条件下では機能しません
|
268
|
+
|
269
|
+
Codeのコードをそのまま実行しても、namedItem()のアラートが機能しません。 しかし、このコードからnamedItem()に関係のない部分を省くと、そのアラートは正常に機能します(そして、そのコードをNo.10の編集を加えずにに実行すると、値としてnullが返されます)。
|
270
|
+
|
271
|
+
#### namedItem()のHTMLParagraphElementを取得できません
|
272
|
+
|
273
|
+
No.10の理解に基づいて、No.1のコードで同じ内容を再現しようとしましたが、失敗しました。
|
274
|
+
|
275
|
+
```html
|
276
|
+
|
5
277
|
<!DOCTYPE html><html>
|
6
278
|
|
7
279
|
<head><script>
|
8
280
|
|
281
|
+
function buttonClick() {
|
282
|
+
|
9
|
-
|
283
|
+
const ps = document.getElementById("ps").children;
|
10
|
-
|
11
|
-
|
284
|
+
|
12
|
-
|
13
|
-
const li0_item = UL.item(0);
|
14
|
-
|
15
|
-
const li1_item = UL.item(1);
|
16
|
-
|
17
|
-
const li2_item = UL.item(2);
|
18
|
-
|
19
|
-
alert("UL.item(0):"+ li0_item);//[object HTMLUListElement]
|
20
|
-
|
21
|
-
// What's in the object?
|
22
|
-
|
23
|
-
alert("UL.item(1):"+ li1_item);//null
|
24
|
-
|
25
|
-
alert("UL.item(2):"+ li2_item);//null
|
26
|
-
|
27
|
-
// What's the expected result?
|
28
|
-
|
29
|
-
|
285
|
+
const p1_namedItem = ps.namedItem("next");
|
30
|
-
|
286
|
+
|
31
|
-
|
287
|
+
const p2_namedItem = ps.namedItem("back");
|
32
|
-
|
33
|
-
|
288
|
+
|
34
|
-
|
35
|
-
alert(li2_namedItem);
|
36
|
-
|
37
|
-
|
289
|
+
alert("ps.namedItem("next"):" + p1_namedItem);
|
290
|
+
|
291
|
+
alert("ps.namedItem("back"):" + p2_namedItem);
|
38
292
|
|
39
293
|
}
|
40
294
|
|
@@ -42,294 +296,18 @@
|
|
42
296
|
|
43
297
|
<body>
|
44
298
|
|
45
|
-
|
299
|
+
<button type="button" onclick= "buttonClick()">Button</button>
|
46
|
-
|
300
|
+
|
47
|
-
|
301
|
+
<div id = "ps">
|
48
|
-
|
302
|
+
|
49
|
-
|
303
|
+
<p name = "next">p1</p>
|
50
|
-
|
304
|
+
|
51
|
-
|
305
|
+
<p name = "back">p2</p>
|
52
|
-
|
306
|
+
|
53
|
-
|
307
|
+
</div>
|
54
308
|
|
55
309
|
</body>
|
56
310
|
|
57
311
|
</html>
|
58
312
|
|
59
313
|
```
|
60
|
-
|
61
|
-
## Action & Question
|
62
|
-
|
63
|
-
### HTMLCollection & HTMLUListElement
|
64
|
-
|
65
|
-
内容についてより詳細な情報を確認する方法はありますか?
|
66
|
-
|
67
|
-
たとえば、それを配列として取得することはできませんか?
|
68
|
-
|
69
|
-
### HTMLCollection.item()
|
70
|
-
|
71
|
-
以下の理由から、不適切な記述が含まれる可能性を懸念します。
|
72
|
-
|
73
|
-
[MDN Web Docs](https://developer.mozilla.org/ja/) says:
|
74
|
-
|
75
|
-
> Returns null if the index is out of range
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
Web technology for developers> Web APIs> HTML Collection
|
80
|
-
|
81
|
-
### HTMLCollection.namedItem()
|
82
|
-
|
83
|
-
以下の理由から、不適切な記述が含まれる可能性を懸念します。
|
84
|
-
|
85
|
-
- アラートは応答しません。
|
86
|
-
|
87
|
-
## 編集
|
88
|
-
|
89
|
-
### No.1:比較のために作成されました
|
90
|
-
|
91
|
-
```script
|
92
|
-
|
93
|
-
function buttonClick() {const ps = document.getElementById("ps").children;
|
94
|
-
|
95
|
-
alert("ps_children:" + ps);//ps_children:[object HTMLCollection]
|
96
|
-
|
97
|
-
const ps_length = ps.length;
|
98
|
-
|
99
|
-
alert("ps.length:"+ length);//ps.length:0
|
100
|
-
|
101
|
-
const p0_item = ps.item(0);
|
102
|
-
|
103
|
-
const p1_item = ps.item(1);
|
104
|
-
|
105
|
-
const p2_item = ps.item(2);
|
106
|
-
|
107
|
-
alert("ps.item(0):"+ p0_item);//ps.item(0):[object HTMLParagraphElement]
|
108
|
-
|
109
|
-
alert("ps.item(1):"+ p1_item);//ps.item(0):[object HTMLParagraphElement]
|
110
|
-
|
111
|
-
alert("ps.item(2):"+ p2_item);//null
|
112
|
-
|
113
|
-
const p1_namedItem = ps.namedItem(next);
|
114
|
-
|
115
|
-
const p2_namedItem = ps.namedItem("back");
|
116
|
-
|
117
|
-
alert("ps.namedItem(next):" + p1_namedItem);
|
118
|
-
|
119
|
-
alert("ps.namedItem("back"):" + p2_namedItem);
|
120
|
-
|
121
|
-
```
|
122
|
-
|
123
|
-
```html
|
124
|
-
|
125
|
-
<button type="button" onclick="buttonClick()">Button</button>
|
126
|
-
|
127
|
-
<div id="ps">
|
128
|
-
|
129
|
-
<p name = "next">p1</p>
|
130
|
-
|
131
|
-
<p name = "back">p2</p>
|
132
|
-
|
133
|
-
</div>
|
134
|
-
|
135
|
-
```
|
136
|
-
|
137
|
-
### No.2: maisumakun(0)は次のように考えます:
|
138
|
-
|
139
|
-
- HTMLCollectionやHTMLUListElementは、Methodや添字参照を使わない限り、[object ~]としてしか取得できません(ただし、添字参照のイメージは共有されていないことに注意してください)。
|
140
|
-
|
141
|
-
- HTMLCollection.item()は、item(0)以外でnullを返すためのMethodです。それは、"index is out of range"をチェックするMethodと言い換えることができる可能性があります。
|
142
|
-
|
143
|
-
- HTMLCollection.namedItem()は、読み取ったデータは視覚的に認識できません。
|
144
|
-
|
145
|
-
なお、上記は再現結果が同じであることを前提とした判断です。 maisumakunが異なる結果を得る場合、結果に関する情報を共有する必要があります。
|
146
|
-
|
147
|
-
## No.3: Google Apps Script
|
148
|
-
|
149
|
-
- 関数の実行によってconsole.logの結果をチェックする方法を確認します。
|
150
|
-
|
151
|
-
- alertとconsole.logの結果の間に大きな違いがあるかどうかを確認します。
|
152
|
-
|
153
|
-
- 関数の実行以外によってconsole.logをチェックする方法を確認します。
|
154
|
-
|
155
|
-
私はすでにそれを経験しているので、私はこの方法に固執するのをやめるべき時があることを知っています。 解決の可能性が低いと判断された場合、このコードは完成形ですが、それは私の本来の目的を果たしませんでした。
|
156
|
-
|
157
|
-
### No.4: onclick= <? buttonClick() ?>が動作することを確認しました
|
158
|
-
|
159
|
-
```script
|
160
|
-
|
161
|
-
function buttonClick(){
|
162
|
-
|
163
|
-
const ssa = SpreadsheetApp.getActiveSpreadsheet();
|
164
|
-
|
165
|
-
var ss = ssa.getActiveSheet();
|
166
|
-
|
167
|
-
ss.getRange(1,1).setValue("Button");
|
168
|
-
|
169
|
-
}
|
170
|
-
|
171
|
-
```
|
172
|
-
|
173
|
-
```html
|
174
|
-
|
175
|
-
<button type="button" onclick= <? buttonClick() ?> >Button</button>
|
176
|
-
|
177
|
-
```
|
178
|
-
|
179
|
-
次のことを回避する方法を見つけられていないので、問題はまだ解決されていません。
|
180
|
-
|
181
|
-
> document is not defined
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
### No.5: HTMLCollection.item()とchildrenに関する疑問解決
|
186
|
-
|
187
|
-
maisumakun said:
|
188
|
-
|
189
|
-
> const UL = document.getElementById("UL").children;」で取得できるのは、あくまで<div id="UL">の子供(<ul>が1つ)のHTMLCollectionです。<ul>の子供ではありません。
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
#### Code
|
194
|
-
|
195
|
-
|document.getElementById("UL")|<div id="UL">~ </div>|HTMLDiv__Element__|
|
196
|
-
|
197
|
-
|:--|:--:|--:|
|
198
|
-
|
199
|
-
|document.getElementById("UL").children|<ul>~</ul>※|HTMLCollection|
|
200
|
-
|
201
|
-
|ps.item(0)|<ul>~ </ul>|HTMLUList__Element__|
|
202
|
-
|
203
|
-
|ps.item(1)|-|null|
|
204
|
-
|
205
|
-
|ps.item(2)|-|null|
|
206
|
-
|
207
|
-
#### 編集>No.1:比較のために作成されました
|
208
|
-
|
209
|
-
|document.getElementById("ps")|<div id="ps">~ </div>|HTMLDiv__Element__|
|
210
|
-
|
211
|
-
|:--|:--:|--:|
|
212
|
-
|
213
|
-
|document.getElementById("ps").children|<p name = "next">~</p>,<p name = "back">~</p>※|HTMLCollection|
|
214
|
-
|
215
|
-
|ps.item(0)|<p name = "next">~</p>|HTMLParagraph__Element__|
|
216
|
-
|
217
|
-
|ps.item(1)|<p name = "back">~</p>|HTMLParagraph__Element__|
|
218
|
-
|
219
|
-
|ps.item(2)|-|null|
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
※推測
|
224
|
-
|
225
|
-
#### 理解を助けた資料
|
226
|
-
|
227
|
-
Syncer(https://syncer.jp/)「[Element.children- 全ての子要素を取得する](https://syncer.jp/javascript-reference/element/children)」
|
228
|
-
|
229
|
-
###No.6: No.5の表は訂正が予定されています
|
230
|
-
|
231
|
-
###No.7: No.5の表を訂正
|
232
|
-
|
233
|
-
- document.getElementById()の値の追加
|
234
|
-
|
235
|
-
- HTMLCollectionのhtml対応部分の修正
|
236
|
-
|
237
|
-
- 表記の統一のための修正
|
238
|
-
|
239
|
-
### No.8: lengthに関する疑問の解決
|
240
|
-
|
241
|
-
No.1のコード、script4行目のアラートの表示内容に疑問がありましたが、同行に存在した記述ミスが原因でした。 同じ方法を使用して再度テストした結果、HTMLUListElementによるHTMLCollection.lengthの値は1、HTMLParagraphElementによるHTMLCollection.lengthの値は2でした。この結果ならば、私には疑問は存在しません。
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
以下の資料は、この問題の解決策を探すために参照されましたが、原因に該当しませんでした。 ただし、質問に関連する内容において認識に誤りが残る情報に触れているようですので、付記します。
|
246
|
-
|
247
|
-
WebTerminal(https://web-terminal.blogspot.com/)「[実はJavaScriptのlengthプロパティは配列要素数ではありません](https://web-terminal.blogspot.com/2012/11/javascriptlength.html)」
|
248
|
-
|
249
|
-
原因とは直接関係がなかったため、内容に関する詳細な調査は行われていません。
|
250
|
-
|
251
|
-
### No.9: 添字参照に関する疑問の解決(仮)
|
252
|
-
|
253
|
-
maisumakun said:
|
254
|
-
|
255
|
-
> HTMLCollectionのままでも、添字参照やlengthの取得は可能です。
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
No.8に記載されている資料および以下の資料を参照する限り、添字参照は、配列(またはそれに近いもの)の要素の一部を抽出する行為を指していると推測されます。この質問では、より詳細な理解は優先事項ではないように思われたので、それは今は脇に置きます。
|
260
|
-
|
261
|
-
- MDN Web Docs(https://developer.mozilla.org/ja/)「[Array](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array)」
|
262
|
-
|
263
|
-
### No.10: namedItem()に関する疑問解決(仮)
|
264
|
-
|
265
|
-
そもそもアラートが効かなかった問題については、No.11のとおりです。
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
Codeのコードを次のように修正すると、HTMLUListElementを取得可能です。
|
270
|
-
|
271
|
-
```script
|
272
|
-
|
273
|
-
const li1_namedItem = UL.namedItem("test");
|
274
|
-
|
275
|
-
```
|
276
|
-
|
277
|
-
```html
|
278
|
-
|
279
|
-
<ul name ="test">
|
280
|
-
|
281
|
-
```
|
282
|
-
|
283
|
-
この結果から、少なくとも返される値に関する問題の原因は、このMethodを使用して実際に参照されるべき要素にnameが設定されていなかったことが原因だと推測されます。
|
284
|
-
|
285
|
-
###No.11: namedItem()に関する未解決の疑問
|
286
|
-
|
287
|
-
これらの疑問は、一定期間にわたって解決に向かう進展がなければ、おそらく追究されずに放置されるでしょう。
|
288
|
-
|
289
|
-
#### namedItem()のアラートは、特定の条件下では機能しません
|
290
|
-
|
291
|
-
Codeのコードをそのまま実行しても、namedItem()のアラートが機能しません。 しかし、このコードからnamedItem()に関係のない部分を省くと、そのアラートは正常に機能します(そして、そのコードをNo.10の編集を加えずにに実行すると、値としてnullが返されます)。
|
292
|
-
|
293
|
-
#### namedItem()のHTMLParagraphElementを取得できません
|
294
|
-
|
295
|
-
No.10の理解に基づいて、No.1のコードで同じ内容を再現しようとしましたが、失敗しました。
|
296
|
-
|
297
|
-
```html
|
298
|
-
|
299
|
-
<!DOCTYPE html><html>
|
300
|
-
|
301
|
-
<head><script>
|
302
|
-
|
303
|
-
function buttonClick() {
|
304
|
-
|
305
|
-
const ps = document.getElementById("ps").children;
|
306
|
-
|
307
|
-
const p1_namedItem = ps.namedItem("next");
|
308
|
-
|
309
|
-
const p2_namedItem = ps.namedItem("back");
|
310
|
-
|
311
|
-
alert("ps.namedItem("next"):" + p1_namedItem);
|
312
|
-
|
313
|
-
alert("ps.namedItem("back"):" + p2_namedItem);
|
314
|
-
|
315
|
-
}
|
316
|
-
|
317
|
-
</script></head>
|
318
|
-
|
319
|
-
<body>
|
320
|
-
|
321
|
-
<button type="button" onclick= "buttonClick()">Button</button>
|
322
|
-
|
323
|
-
<div id = "ps">
|
324
|
-
|
325
|
-
<p name = "next">p1</p>
|
326
|
-
|
327
|
-
<p name = "back">p2</p>
|
328
|
-
|
329
|
-
</div>
|
330
|
-
|
331
|
-
</body>
|
332
|
-
|
333
|
-
</html>
|
334
|
-
|
335
|
-
```
|
11
編集> No.11: namedItem()に関する未解決の疑問
test
CHANGED
File without changes
|
test
CHANGED
@@ -281,3 +281,55 @@
|
|
281
281
|
```
|
282
282
|
|
283
283
|
この結果から、少なくとも返される値に関する問題の原因は、このMethodを使用して実際に参照されるべき要素にnameが設定されていなかったことが原因だと推測されます。
|
284
|
+
|
285
|
+
###No.11: namedItem()に関する未解決の疑問
|
286
|
+
|
287
|
+
これらの疑問は、一定期間にわたって解決に向かう進展がなければ、おそらく追究されずに放置されるでしょう。
|
288
|
+
|
289
|
+
#### namedItem()のアラートは、特定の条件下では機能しません
|
290
|
+
|
291
|
+
Codeのコードをそのまま実行しても、namedItem()のアラートが機能しません。 しかし、このコードからnamedItem()に関係のない部分を省くと、そのアラートは正常に機能します(そして、そのコードをNo.10の編集を加えずにに実行すると、値としてnullが返されます)。
|
292
|
+
|
293
|
+
#### namedItem()のHTMLParagraphElementを取得できません
|
294
|
+
|
295
|
+
No.10の理解に基づいて、No.1のコードで同じ内容を再現しようとしましたが、失敗しました。
|
296
|
+
|
297
|
+
```html
|
298
|
+
|
299
|
+
<!DOCTYPE html><html>
|
300
|
+
|
301
|
+
<head><script>
|
302
|
+
|
303
|
+
function buttonClick() {
|
304
|
+
|
305
|
+
const ps = document.getElementById("ps").children;
|
306
|
+
|
307
|
+
const p1_namedItem = ps.namedItem("next");
|
308
|
+
|
309
|
+
const p2_namedItem = ps.namedItem("back");
|
310
|
+
|
311
|
+
alert("ps.namedItem("next"):" + p1_namedItem);
|
312
|
+
|
313
|
+
alert("ps.namedItem("back"):" + p2_namedItem);
|
314
|
+
|
315
|
+
}
|
316
|
+
|
317
|
+
</script></head>
|
318
|
+
|
319
|
+
<body>
|
320
|
+
|
321
|
+
<button type="button" onclick= "buttonClick()">Button</button>
|
322
|
+
|
323
|
+
<div id = "ps">
|
324
|
+
|
325
|
+
<p name = "next">p1</p>
|
326
|
+
|
327
|
+
<p name = "back">p2</p>
|
328
|
+
|
329
|
+
</div>
|
330
|
+
|
331
|
+
</body>
|
332
|
+
|
333
|
+
</html>
|
334
|
+
|
335
|
+
```
|
10
編集>No.10: namedItem()に関する疑問解決(仮)
test
CHANGED
File without changes
|
test
CHANGED
@@ -259,3 +259,25 @@
|
|
259
259
|
No.8に記載されている資料および以下の資料を参照する限り、添字参照は、配列(またはそれに近いもの)の要素の一部を抽出する行為を指していると推測されます。この質問では、より詳細な理解は優先事項ではないように思われたので、それは今は脇に置きます。
|
260
260
|
|
261
261
|
- MDN Web Docs(https://developer.mozilla.org/ja/)「[Array](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array)」
|
262
|
+
|
263
|
+
### No.10: namedItem()に関する疑問解決(仮)
|
264
|
+
|
265
|
+
そもそもアラートが効かなかった問題については、No.11のとおりです。
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
Codeのコードを次のように修正すると、HTMLUListElementを取得可能です。
|
270
|
+
|
271
|
+
```script
|
272
|
+
|
273
|
+
const li1_namedItem = UL.namedItem("test");
|
274
|
+
|
275
|
+
```
|
276
|
+
|
277
|
+
```html
|
278
|
+
|
279
|
+
<ul name ="test">
|
280
|
+
|
281
|
+
```
|
282
|
+
|
283
|
+
この結果から、少なくとも返される値に関する問題の原因は、このMethodを使用して実際に参照されるべき要素にnameが設定されていなかったことが原因だと推測されます。
|
9
編集> No.9: 添字参照に関する疑問の解決(仮)
test
CHANGED
File without changes
|
test
CHANGED
@@ -247,3 +247,15 @@
|
|
247
247
|
WebTerminal(https://web-terminal.blogspot.com/)「[実はJavaScriptのlengthプロパティは配列要素数ではありません](https://web-terminal.blogspot.com/2012/11/javascriptlength.html)」
|
248
248
|
|
249
249
|
原因とは直接関係がなかったため、内容に関する詳細な調査は行われていません。
|
250
|
+
|
251
|
+
### No.9: 添字参照に関する疑問の解決(仮)
|
252
|
+
|
253
|
+
maisumakun said:
|
254
|
+
|
255
|
+
> HTMLCollectionのままでも、添字参照やlengthの取得は可能です。
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
No.8に記載されている資料および以下の資料を参照する限り、添字参照は、配列(またはそれに近いもの)の要素の一部を抽出する行為を指していると推測されます。この質問では、より詳細な理解は優先事項ではないように思われたので、それは今は脇に置きます。
|
260
|
+
|
261
|
+
- MDN Web Docs(https://developer.mozilla.org/ja/)「[Array](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array)」
|
8
編集> No.8: lengthに関する疑問の解決
test
CHANGED
File without changes
|
test
CHANGED
@@ -235,3 +235,15 @@
|
|
235
235
|
- HTMLCollectionのhtml対応部分の修正
|
236
236
|
|
237
237
|
- 表記の統一のための修正
|
238
|
+
|
239
|
+
### No.8: lengthに関する疑問の解決
|
240
|
+
|
241
|
+
No.1のコード、script4行目のアラートの表示内容に疑問がありましたが、同行に存在した記述ミスが原因でした。 同じ方法を使用して再度テストした結果、HTMLUListElementによるHTMLCollection.lengthの値は1、HTMLParagraphElementによるHTMLCollection.lengthの値は2でした。この結果ならば、私には疑問は存在しません。
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
以下の資料は、この問題の解決策を探すために参照されましたが、原因に該当しませんでした。 ただし、質問に関連する内容において認識に誤りが残る情報に触れているようですので、付記します。
|
246
|
+
|
247
|
+
WebTerminal(https://web-terminal.blogspot.com/)「[実はJavaScriptのlengthプロパティは配列要素数ではありません](https://web-terminal.blogspot.com/2012/11/javascriptlength.html)」
|
248
|
+
|
249
|
+
原因とは直接関係がなかったため、内容に関する詳細な調査は行われていません。
|
7
編集> No.7 No.5の表を訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -192,11 +192,13 @@
|
|
192
192
|
|
193
193
|
#### Code
|
194
194
|
|
195
|
-
|document.getElementById("UL")
|
195
|
+
|document.getElementById("UL")|<div id="UL">~ </div>|HTMLDiv__Element__|
|
196
196
|
|
197
197
|
|:--|:--:|--:|
|
198
198
|
|
199
|
+
|document.getElementById("UL").children|<ul>~</ul>※|HTMLCollection|
|
200
|
+
|
199
|
-
|ps.item(0)|<ul>~ </ul>|
|
201
|
+
|ps.item(0)|<ul>~ </ul>|HTMLUList__Element__|
|
200
202
|
|
201
203
|
|ps.item(1)|-|null|
|
202
204
|
|
@@ -204,18 +206,32 @@
|
|
204
206
|
|
205
207
|
#### 編集>No.1:比較のために作成されました
|
206
208
|
|
207
|
-
|document.getElementById("ps")
|
209
|
+
|document.getElementById("ps")|<div id="ps">~ </div>|HTMLDiv__Element__|
|
208
210
|
|
209
211
|
|:--|:--:|--:|
|
210
212
|
|
213
|
+
|document.getElementById("ps").children|<p name = "next">~</p>,<p name = "back">~</p>※|HTMLCollection|
|
214
|
+
|
211
215
|
|ps.item(0)|<p name = "next">~</p>|HTMLParagraph__Element__|
|
212
216
|
|
213
217
|
|ps.item(1)|<p name = "back">~</p>|HTMLParagraph__Element__|
|
214
218
|
|
215
219
|
|ps.item(2)|-|null|
|
216
220
|
|
221
|
+
|
222
|
+
|
223
|
+
※推測
|
224
|
+
|
217
225
|
#### 理解を助けた資料
|
218
226
|
|
219
227
|
Syncer(https://syncer.jp/)「[Element.children- 全ての子要素を取得する](https://syncer.jp/javascript-reference/element/children)」
|
220
228
|
|
221
229
|
###No.6: No.5の表は訂正が予定されています
|
230
|
+
|
231
|
+
###No.7: No.5の表を訂正
|
232
|
+
|
233
|
+
- document.getElementById()の値の追加
|
234
|
+
|
235
|
+
- HTMLCollectionのhtml対応部分の修正
|
236
|
+
|
237
|
+
- 表記の統一のための修正
|
6
編集>No.6: No.5の表は訂正が予定されています
test
CHANGED
File without changes
|
test
CHANGED
@@ -217,3 +217,5 @@
|
|
217
217
|
#### 理解を助けた資料
|
218
218
|
|
219
219
|
Syncer(https://syncer.jp/)「[Element.children- 全ての子要素を取得する](https://syncer.jp/javascript-reference/element/children)」
|
220
|
+
|
221
|
+
###No.6: No.5の表は訂正が予定されています
|
5
編集> No.5: HTMLCollection.item()とchildrenに関する疑問解決
test
CHANGED
File without changes
|
test
CHANGED
@@ -179,3 +179,41 @@
|
|
179
179
|
次のことを回避する方法を見つけられていないので、問題はまだ解決されていません。
|
180
180
|
|
181
181
|
> document is not defined
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
### No.5: HTMLCollection.item()とchildrenに関する疑問解決
|
186
|
+
|
187
|
+
maisumakun said:
|
188
|
+
|
189
|
+
> const UL = document.getElementById("UL").children;」で取得できるのは、あくまで<div id="UL">の子供(<ul>が1つ)のHTMLCollectionです。<ul>の子供ではありません。
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
#### Code
|
194
|
+
|
195
|
+
|document.getElementById("UL").children|<div id="UL">~ </div>|object HTMLCollection|
|
196
|
+
|
197
|
+
|:--|:--:|--:|
|
198
|
+
|
199
|
+
|ps.item(0)|<ul>~ </ul>|object HTMLUList__Element__|
|
200
|
+
|
201
|
+
|ps.item(1)|-|null|
|
202
|
+
|
203
|
+
|ps.item(2)|-|null|
|
204
|
+
|
205
|
+
#### 編集>No.1:比較のために作成されました
|
206
|
+
|
207
|
+
|document.getElementById("ps").children|<div id="ps">~ </div>|object HTMLCollection|
|
208
|
+
|
209
|
+
|:--|:--:|--:|
|
210
|
+
|
211
|
+
|ps.item(0)|<p name = "next">~</p>|HTMLParagraph__Element__|
|
212
|
+
|
213
|
+
|ps.item(1)|<p name = "back">~</p>|HTMLParagraph__Element__|
|
214
|
+
|
215
|
+
|ps.item(2)|-|null|
|
216
|
+
|
217
|
+
#### 理解を助けた資料
|
218
|
+
|
219
|
+
Syncer(https://syncer.jp/)「[Element.children- 全ての子要素を取得する](https://syncer.jp/javascript-reference/element/children)」
|
4
編集>No.4: onclick= <? buttonClick() ?>が動作することを確認しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -153,3 +153,29 @@
|
|
153
153
|
- 関数の実行以外によってconsole.logをチェックする方法を確認します。
|
154
154
|
|
155
155
|
私はすでにそれを経験しているので、私はこの方法に固執するのをやめるべき時があることを知っています。 解決の可能性が低いと判断された場合、このコードは完成形ですが、それは私の本来の目的を果たしませんでした。
|
156
|
+
|
157
|
+
### No.4: onclick= <? buttonClick() ?>が動作することを確認しました
|
158
|
+
|
159
|
+
```script
|
160
|
+
|
161
|
+
function buttonClick(){
|
162
|
+
|
163
|
+
const ssa = SpreadsheetApp.getActiveSpreadsheet();
|
164
|
+
|
165
|
+
var ss = ssa.getActiveSheet();
|
166
|
+
|
167
|
+
ss.getRange(1,1).setValue("Button");
|
168
|
+
|
169
|
+
}
|
170
|
+
|
171
|
+
```
|
172
|
+
|
173
|
+
```html
|
174
|
+
|
175
|
+
<button type="button" onclick= <? buttonClick() ?> >Button</button>
|
176
|
+
|
177
|
+
```
|
178
|
+
|
179
|
+
次のことを回避する方法を見つけられていないので、問題はまだ解決されていません。
|
180
|
+
|
181
|
+
> document is not defined
|
3
編集> No.3: Google Apps Script
test
CHANGED
File without changes
|
test
CHANGED
@@ -143,3 +143,13 @@
|
|
143
143
|
- HTMLCollection.namedItem()は、読み取ったデータは視覚的に認識できません。
|
144
144
|
|
145
145
|
なお、上記は再現結果が同じであることを前提とした判断です。 maisumakunが異なる結果を得る場合、結果に関する情報を共有する必要があります。
|
146
|
+
|
147
|
+
## No.3: Google Apps Script
|
148
|
+
|
149
|
+
- 関数の実行によってconsole.logの結果をチェックする方法を確認します。
|
150
|
+
|
151
|
+
- alertとconsole.logの結果の間に大きな違いがあるかどうかを確認します。
|
152
|
+
|
153
|
+
- 関数の実行以外によってconsole.logをチェックする方法を確認します。
|
154
|
+
|
155
|
+
私はすでにそれを経験しているので、私はこの方法に固執するのをやめるべき時があることを知っています。 解決の可能性が低いと判断された場合、このコードは完成形ですが、それは私の本来の目的を果たしませんでした。
|
2
編集>No.2: maisumakun(0)は次のように考えます:
test
CHANGED
File without changes
|
test
CHANGED
@@ -133,3 +133,13 @@
|
|
133
133
|
</div>
|
134
134
|
|
135
135
|
```
|
136
|
+
|
137
|
+
### No.2: maisumakun(0)は次のように考えます:
|
138
|
+
|
139
|
+
- HTMLCollectionやHTMLUListElementは、Methodや添字参照を使わない限り、[object ~]としてしか取得できません(ただし、添字参照のイメージは共有されていないことに注意してください)。
|
140
|
+
|
141
|
+
- HTMLCollection.item()は、item(0)以外でnullを返すためのMethodです。それは、"index is out of range"をチェックするMethodと言い換えることができる可能性があります。
|
142
|
+
|
143
|
+
- HTMLCollection.namedItem()は、読み取ったデータは視覚的に認識できません。
|
144
|
+
|
145
|
+
なお、上記は再現結果が同じであることを前提とした判断です。 maisumakunが異なる結果を得る場合、結果に関する情報を共有する必要があります。
|
1
編集>No.1:比較のために作成されました
test
CHANGED
File without changes
|
test
CHANGED
@@ -83,3 +83,53 @@
|
|
83
83
|
以下の理由から、不適切な記述が含まれる可能性を懸念します。
|
84
84
|
|
85
85
|
- アラートは応答しません。
|
86
|
+
|
87
|
+
## 編集
|
88
|
+
|
89
|
+
### No.1:比較のために作成されました
|
90
|
+
|
91
|
+
```script
|
92
|
+
|
93
|
+
function buttonClick() {const ps = document.getElementById("ps").children;
|
94
|
+
|
95
|
+
alert("ps_children:" + ps);//ps_children:[object HTMLCollection]
|
96
|
+
|
97
|
+
const ps_length = ps.length;
|
98
|
+
|
99
|
+
alert("ps.length:"+ length);//ps.length:0
|
100
|
+
|
101
|
+
const p0_item = ps.item(0);
|
102
|
+
|
103
|
+
const p1_item = ps.item(1);
|
104
|
+
|
105
|
+
const p2_item = ps.item(2);
|
106
|
+
|
107
|
+
alert("ps.item(0):"+ p0_item);//ps.item(0):[object HTMLParagraphElement]
|
108
|
+
|
109
|
+
alert("ps.item(1):"+ p1_item);//ps.item(0):[object HTMLParagraphElement]
|
110
|
+
|
111
|
+
alert("ps.item(2):"+ p2_item);//null
|
112
|
+
|
113
|
+
const p1_namedItem = ps.namedItem(next);
|
114
|
+
|
115
|
+
const p2_namedItem = ps.namedItem("back");
|
116
|
+
|
117
|
+
alert("ps.namedItem(next):" + p1_namedItem);
|
118
|
+
|
119
|
+
alert("ps.namedItem("back"):" + p2_namedItem);
|
120
|
+
|
121
|
+
```
|
122
|
+
|
123
|
+
```html
|
124
|
+
|
125
|
+
<button type="button" onclick="buttonClick()">Button</button>
|
126
|
+
|
127
|
+
<div id="ps">
|
128
|
+
|
129
|
+
<p name = "next">p1</p>
|
130
|
+
|
131
|
+
<p name = "back">p2</p>
|
132
|
+
|
133
|
+
</div>
|
134
|
+
|
135
|
+
```
|