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

回答編集履歴

3

無駄な判断のような気がするので1回だけするようにした。

2018/02/08 01:28

投稿

root_jp
root_jp

スコア4666

answer CHANGED
@@ -3,10 +3,10 @@
3
3
  document.getElementsByName("company").forEach(function(company) {
4
4
  var productClass = company.value.replace("company", "product");
5
5
  var products = document.getElementsByClassName(productClass);
6
+ var displayStyle = company.checked ? "block" : "none";
6
7
  Array.prototype.forEach.call(products, function(product) {
7
- product.style.display = company.checked ? "block" : "none";
8
+ product.style.display = displayStyle;
8
9
  });
9
10
  });
10
11
  }
11
-
12
12
  ```

2

変更

2018/02/08 01:28

投稿

root_jp
root_jp

スコア4666

answer CHANGED
@@ -1,7 +1,6 @@
1
1
  ```JavaScript
2
2
  function dsProduct() {
3
- var companies = document.getElementsByName("company");
3
+ document.getElementsByName("company").forEach(function(company) {
4
- companies.forEach(function(company) {
5
4
  var productClass = company.value.replace("company", "product");
6
5
  var products = document.getElementsByClassName(productClass);
7
6
  Array.prototype.forEach.call(products, function(product) {

1

変更

2018/02/08 01:22

投稿

root_jp
root_jp

スコア4666

answer CHANGED
@@ -1,44 +1,13 @@
1
- 元のコードをベースにすると、以下のような感じでできると思います。
2
1
  ```JavaScript
3
2
  function dsProduct() {
4
- var products = document.getElementsByName("company");
5
- var productAList = document.getElementsByClassName("productA");
6
- Array.prototype.forEach.call(productAList, function(v) {
7
- v.style.display = products[0].checked ? "block" : "none";
8
- });
9
-
10
- var productBList = document.getElementsByClassName("productB");
11
- Array.prototype.forEach.call(productBList, function(v) {
12
- v.style.display = products[1].checked ? "block" : "none";
13
- });
14
-
15
- var productCList = document.getElementsByClassName("productC");
16
- Array.prototype.forEach.call(productCList, function(v) {
17
- v.style.display = products[2].checked ? "block" : "none";
18
- });
19
- }
20
-
21
- ```
22
-
23
- HTMLにidを加えてよければ、もう少しシンプルにもなります。
24
- ```HTML
25
- <ul class="company">
26
- <li><label><input class="input" type="checkbox" value="companyA" id="productA" name="company" onclick="dsProduct();" ><span>会社A</span></label></li>
27
- <li><label><input class="input" type="checkbox" value="companyB" id="productB" name="company" onclick="dsProduct();" ><span>会社B</span></label></li>
28
- <li><label><input class="input" type="checkbox" value="companyC" id="productC" name="company" onclick="dsProduct();" ><span>会社C</span></label></li>
29
- </ul>
30
-
31
- 以下同じ
32
- ```
33
-
34
- ```JavaScript
35
- function dsProduct() {
36
3
  var companies = document.getElementsByName("company");
37
4
  companies.forEach(function(company) {
5
+ var productClass = company.value.replace("company", "product");
38
- var products = document.getElementsByClassName(company.id);
6
+ var products = document.getElementsByClassName(productClass);
39
7
  Array.prototype.forEach.call(products, function(product) {
40
8
  product.style.display = company.checked ? "block" : "none";
41
9
  });
42
10
  });
43
11
  }
12
+
44
13
  ```