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

回答編集履歴

1

回答を追加

2018/03/18 02:50

投稿

defghi1977
defghi1977

スコア4756

answer CHANGED
@@ -29,4 +29,45 @@
29
29
  ```
30
30
 
31
31
  NOTE:
32
- このような初歩的なミスはWEBブラウザの開発者ツールで確認できますから, スクリプトが思い通りに動かない際はまず文法にミスがないかを検証して下さい.
32
+ このような初歩的なミスはWEBブラウザの開発者ツールで確認できますから, スクリプトが思い通りに動かない際はまず文法にミスがないかを検証して下さい.
33
+
34
+ ---
35
+ > 「select name="kindDirect"」「select name="kindColor"」「select name="kindDirect"」3つの条件を選択した後、
36
+ 「表示」などのボタンを押すことなく、selectを変更させるだけで画像を変化させたいです。
37
+ また可能な限りif文を短く、回数を減らせたら嬉しいです。
38
+
39
+ この手の問題はHTMLの構造やデータのもたせ方(つまり**設計**)いかんでどのようにもなるので, どうにも答えようがありません. …が, 例えば次のようにすれば`if`文すら要らなくなります.
40
+
41
+ ```HTML
42
+ <div id="out"></div>
43
+ <div id="selects">
44
+ <label>動物
45
+ <select id="kind">
46
+ <option value="/image/eel.png">ウナギ</option>
47
+ <option value="/image/wolf.png">オオカミ</option>
48
+ <option value="/image/tiger.png">トラ</option>
49
+ </select>
50
+ </label>
51
+ <label>色
52
+ <select id="color">
53
+ <option value="red">赤</option>
54
+ <option value="green">緑</option>
55
+ <option value="blue">青</option>
56
+ </select>
57
+ </label>
58
+ <label>位置
59
+ <select id="pos">
60
+ <option value="left">左</option>
61
+ <option value="center">中央</option>
62
+ <option value="right">右</option>
63
+ </select>
64
+ </label>
65
+ </div>
66
+ ```
67
+
68
+ ```JavaScript
69
+ selects.onchange = e => {
70
+ out.innerHTML = `<img src="${kind.value}" style="background-color:${color.value}"/>`;
71
+ out.style.textAlign = pos.value;
72
+ };
73
+ ```