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

回答編集履歴

5

修正漏れ

2020/09/29 09:35

投稿

kuma_kuma_
kuma_kuma_

スコア2506

answer CHANGED
@@ -72,12 +72,12 @@
72
72
  // 対戦が違う場合、イベントを登録
73
73
  // onclick="winorlose_click(this);" とおんなじ内容
74
74
  tds[itd].addEventListener('click', {name: this, handleEvent: winorlose_click});
75
- // ※ここで設定
75
+ // ※ここで設定
76
- if(json_data[arr[1]][arr[2]]["WinOrLose"] == 1){
76
+ if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == 1){
77
- tds[itd].innerHTML = "○";
77
+ tds[itd].innerHTML = "○";
78
- } else {
78
+ } else if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == -1){
79
- tds[itd].innerHTML = "×";
79
+ tds[itd].innerHTML = "×";
80
- }
80
+ }
81
81
  }
82
82
  }
83
83
  }

4

追記

2020/09/29 09:35

投稿

kuma_kuma_
kuma_kuma_

スコア2506

answer CHANGED
@@ -48,4 +48,39 @@
48
48
  ```
49
49
 
50
50
  JSON構造が階層構造だから難しく感じるかもしれないけれど
51
- なれるととても便利だから頑張って覚えてね!
51
+ なれるととても便利だから頑張って覚えてね!
52
+
53
+ 追記2
54
+ 前の回答の内容に追記しました(※部分)
55
+ (ここは学習ポイントなので自力でがんばってほしかった...)
56
+ ```Javascript
57
+ // 初期処理
58
+ function init(){
59
+ var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
60
+ // 1行目はヘッダーだから飛ばして
61
+ for(var itr = 1; itr < trs.length; itr++){
62
+ // テーブルの行毎に処理
63
+ var tds = trs[itr].getElementsByTagName('td');
64
+ for(var itd = 0; itd < tds.length; itd++){
65
+ if(tds[itd].id.indexOf('cell_') != -1){
66
+ // 勝ち負け入力<td>タグの場合
67
+ var arr = tds[itd].id.split('_');
68
+ if(arr[1] == arr[2]){
69
+ // 対戦が同じ場合
70
+ tds[itd].classList.add('right_up_border'); // 斜め線を指定
71
+ }else{
72
+ // 対戦が違う場合、イベントを登録
73
+ // onclick="winorlose_click(this);" とおんなじ内容
74
+ tds[itd].addEventListener('click', {name: this, handleEvent: winorlose_click});
75
+ // ※ここで設定
76
+ if(json_data[arr[1]][arr[2]]["WinOrLose"] == 1){
77
+ tds[itd].innerHTML = "○";
78
+ } else {
79
+ tds[itd].innerHTML = "×";
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+ ```

3

修正

2020/09/28 19:39

投稿

kuma_kuma_
kuma_kuma_

スコア2506

answer CHANGED
@@ -8,6 +8,7 @@
8
8
  "WinOrLose"は
9
9
  勝ち = 1
10
10
  負け = -1
11
+ 未設定 = 0
11
12
  同一 = 9
12
13
  で設定したとして
13
14
  ```Javascript

2

修正漏れ

2020/09/28 18:44

投稿

kuma_kuma_
kuma_kuma_

スコア2506

answer CHANGED
@@ -3,6 +3,7 @@
3
3
  あとは以前回答したinitのイベント設定時に受け取った
4
4
  JSON形式の値"○""●"を設定すればよいだけです。
5
5
 
6
+ 追記
6
7
  JSONデータの持ち方
7
8
  "WinOrLose"は
8
9
  勝ち = 1

1

追記

2020/09/28 18:41

投稿

kuma_kuma_
kuma_kuma_

スコア2506

answer CHANGED
@@ -1,4 +1,49 @@
1
1
  [【Rails入門】JSON.parseでパラメーターをHashに変換する方法](https://www.sejuku.net/blog/74120)
2
2
  これでJSON形式の受け渡しができます。
3
3
  あとは以前回答したinitのイベント設定時に受け取った
4
- JSON形式の値"○""●"を設定すればよいだけです。
4
+ JSON形式の値"○""●"を設定すればよいだけです。
5
+
6
+ JSONデータの持ち方
7
+ "WinOrLose"は
8
+ 勝ち = 1
9
+ 負け = -1
10
+ 同一 = 9
11
+ で設定したとして
12
+ ```Javascript
13
+ var json_data = {"_1":{
14
+ "member":"Aさん",
15
+ "_1":{"member":"Aさん","WinOrLose":9},
16
+ "_2":{"member":"Bさん","WinOrLose":1},
17
+ "_3":{"member":"Cさん","WinOrLose":-1}
18
+ },
19
+ "_2":{
20
+ "member":"Bさん",
21
+ "_1":{"member":"Aさん","WinOrLose":-1},
22
+ "_2":{"member":"Bさん","WinOrLose":9},
23
+ "_3":{"member":"Cさん","WinOrLose":1}
24
+ },
25
+ "_3":{
26
+ "member":"Cさん",
27
+ "_1":{"member":"Aさん","WinOrLose":1},
28
+ "_2":{"member":"Bさん","WinOrLose":-1},
29
+ "_3":{"member":"Cさん","WinOrLose":9}
30
+ }
31
+ };
32
+ ```
33
+ という形になります。
34
+ これはDBから取得したデータそのままの構造です。
35
+
36
+ 検索する際にはこの様に使います
37
+ ```Javascript
38
+ console.log(json_data["_1"]["member"]);
39
+ // 行"_1"のメンバーは? "Aさん"
40
+
41
+ console.log(json_data["_1"]["_3"]["member"]);
42
+ // 行"_1"列"_3"のメンバーは? "Cさん"
43
+
44
+ console.log(json_data["_2"]["_1"]["WinOrLose"]);
45
+ // 行"_2"列"_1"の勝敗は? -1(負け)
46
+ ```
47
+
48
+ JSON構造が階層構造だから難しく感じるかもしれないけれど
49
+ なれるととても便利だから頑張って覚えてね!