# サブテーブルｎ2行目以降の条件分岐表示について

**URL:** <https://community.cybozu.dev/t/topic/5786>\
**Category:** kintone 開発相談\
**Created:** [2022 年 3 月 9 日午前 7:31 UTC](https://community.cybozu.dev/t/topic/5786 "2022-03-09T07:31:34Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 9 日午前 7:31 UTC](https://community.cybozu.dev/t/topic/5786/1 "2022-03-09T07:31:34Z")

</div>

**背景・実現したいこと**

**テーブル内の非表示にしている一部のフィールドを選択したチェックボックスの値によって**

**表示させたいが、行を追加した2行目以降では反映されない。**

**1行目は非表示で2行目以降に表示させたい場合など対応できるよう実装したい。**

&nbsp;

**エラー情報** （開発者ツールのコンソール）

なし

&nbsp;

**利用したソースコード**

&nbsp;

kintone.events.on(events, function(event) {  
&nbsp; &nbsp; var record =event.record;  
&nbsp; &nbsp; var checkboxValue = record[‘receipts’][‘value’][‘0’][‘value’][‘その他’][‘value’];  
&nbsp; &nbsp; var setFieldShown = &nbsp;kintone.app.record.setFieldShown  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘再洗浄’, false);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘返却先’, false);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘詳細’, false);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留サイズ背番号’, false);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留サイズ名’, false);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留数量’, false);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留箇所詳細’, false);&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = 0; i \<= 10 ; i++) {  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( checkboxValue[i] === ‘再洗浄’) {  
&nbsp; &nbsp; &nbsp; &nbsp;  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setFieldShown(‘再洗浄’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setFieldShown(‘返却先’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setFieldShown(‘詳細’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (checkboxValue[i] === ‘残留’) {  
&nbsp; &nbsp; &nbsp; &nbsp;  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留サイズ背番号’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留サイズ名’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留数量’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留数量’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;  
&nbsp; &nbsp; &nbsp; &nbsp; }  
&nbsp; &nbsp; &nbsp; &nbsp; return event;  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  
});  
})();

---

<div class="post-metadata">

**Author:** ![Legacy\_Account871](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@Legacy\_Account871](https://community.cybozu.dev/u/Legacy_Account871)\
**Post date:** [2022 年 3 月 10 日午前 9:10 UTC](https://community.cybozu.dev/t/topic/5786/2 "2022-03-10T09:10:55Z")

</div>

1. 

```
   var checkboxValue = record['receipts']['value']['0']['value']['その他']['value'];

```

0番目（１行目）のその他のチェックボックスの値を見ているようです。

テーブルのすべての行で確認する必要があります。

1. 

```
   for (var i = 0; i <= 10 ; i++) {

```

10という数字はテーブルの行数は、最大でも11行以下だろうということでしょうか？

テーブルの行数を取得するのが良さそうです。

1. 

forの次の行で

```
console.log(checkboxValue[i])

```

を入れてみて何が表示されるか確認されると理解が深まると思います。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 11 日午前 3:10 UTC](https://community.cybozu.dev/t/topic/5786/3 "2022-03-11T03:10:15Z")

</div>

[harada](https://community.cybozu.dev/hc/ja/profiles/371966959511-harada)さん

ご返信ありがとうございます。

1)全ての行を確認する方法は

```
var checkboxValue = record['receipts']['value'][i]['value']['その他']['value'];

```

でよろしいでしょうか。

2)テーブルの行数取得ですが、

```
for (i = 0 ; i <= receipts.length; i++) {

```

&nbsp;で試していますがうまくいきません。

素人質問で申し訳ありません。ご教授お願い致します。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account871](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@Legacy\_Account871](https://community.cybozu.dev/u/Legacy_Account871)\
**Post date:** [2022 年 3 月 11 日午前 4:21 UTC](https://community.cybozu.dev/t/topic/5786/4 "2022-03-11T04:21:37Z")

</div>

1. 

For文で包まれていれば問題ないように思えます。

1. 

```
console.log(receipts.length)

```

でとれませんか？

1. 

もしかしたら、for文の使いこなしが曖昧なのかもしれません。

ご参考です。

はじめようJavaScript第16回 kintone JavaScriptカスタマイズのプログラム実例を学ぼう④（テーブル操作） – cybozu developer network  
[https://developer.cybozu.io/hc/ja/articles/360027244231](https://developer.cybozu.io/hc/ja/articles/360027244231)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 11 日午前 6:42 UTC](https://community.cybozu.dev/t/topic/5786/5 "2022-03-11T06:42:35Z")

</div>

[harada](https://community.cybozu.dev/hc/ja/profiles/371966959511-harada)さん

何度も申し訳ないです。

上記試してみましたが、うまくいきません。

根本的にコードの書き方の問題でしょうか。

&nbsp;

(function () {  
&nbsp; “use strict”;  
&nbsp; var events = [  
&nbsp; &nbsp; ‘app.record.detail.show’,  
&nbsp; &nbsp; ‘app.record.create.show’,  
&nbsp; &nbsp; ‘app.record.edit.show’,  
&nbsp; &nbsp; ‘app.record.create.change.その他’,  
&nbsp; &nbsp; ‘app.record.create.change.receipts’,  
&nbsp; &nbsp; ‘app.record.edit.change.その他’,  
&nbsp; &nbsp; ‘app.record.edit.change.receipts’  
&nbsp; ];

&nbsp; kintone.events.on(events, function (event) {  
&nbsp; &nbsp; var record = event.record;  
&nbsp; &nbsp; var setFieldShown = kintone.app.record.setFieldShown

&nbsp; &nbsp; setFieldShown(‘再洗浄’, false);  
&nbsp; &nbsp; setFieldShown(‘返却先’, false);  
&nbsp; &nbsp; setFieldShown(‘詳細’, false);  
&nbsp; &nbsp; setFieldShown(‘残留サイズ背番号’, false);  
&nbsp; &nbsp; setFieldShown(‘残留サイズ名’, false);  
&nbsp; &nbsp; setFieldShown(‘残留数量’, false);  
&nbsp; &nbsp; setFieldShown(‘残留箇所詳細’, false);

&nbsp; &nbsp; for (i = 0; i \<= receipts.length; i++) {  
&nbsp; &nbsp; &nbsp; console.log(receipts.length)  
&nbsp; &nbsp; &nbsp; var checkboxValue = record[‘receipts’][‘value’][i][‘value’][‘その他’][‘value’];  
&nbsp; &nbsp; &nbsp;  
&nbsp; &nbsp; &nbsp; if (checkboxValue[i] === ‘再洗浄’) {  
&nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘再洗浄’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘返却先’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘詳細’, true);  
&nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; &nbsp; if (checkboxValue[i] === ‘残留’) {  
&nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留サイズ背番号’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留サイズ名’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留数量’, true);  
&nbsp; &nbsp; &nbsp; &nbsp; setFieldShown(‘残留数量’, true);  
&nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; }  
&nbsp; &nbsp; return event;

&nbsp; });  
})();

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account871](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@Legacy\_Account871](https://community.cybozu.dev/u/Legacy_Account871)\
**Post date:** [2022 年 3 月 11 日午前 7:54 UTC](https://community.cybozu.dev/t/topic/5786/6 "2022-03-11T07:54:23Z")

</div>

1. 

```
      var checkboxValue = record['receipts']['value'][i]['value']['その他']['value'];
     
      if (checkboxValue[i] === '再洗浄') {
        setFieldShown('再洗浄', true);
        setFieldShown('返却先', true);
        setFieldShown('詳細', true);
      }

```

で

```
      if (checkboxValue[i] === '再洗浄') {

```

の前に

```
console.log(i)

console.log(checkboxValue[i])

```

でコンソールになにが表示されますでしょうか

i は、なにを指していますでしょうか？テーブルの行数を取得して、

iが0から繰り上がっているのは今プログラムがアクセスしている行数番号(0始まり)なのですが、checkboxValue[i]を取得して、再洗浄という文字と比較しようとしているため意図した動作にならないのではないようです。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 11 日午前 8:36 UTC](https://community.cybozu.dev/t/topic/5786/7 "2022-03-11T08:36:19Z")

</div>

上記エラーが出てしまいます。

```
for (i = 0; i <= receipts.length; i++) {
      var checkboxValue = record['receipts']['value'][i]['value']['その他']['value'];
     
      if (checkboxValue[i] === '再洗浄') {
        console.log(i)
        console.log(checkboxValue[i])

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account871](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@Legacy\_Account871](https://community.cybozu.dev/u/Legacy_Account871)\
**Post date:** [2022 年 3 月 11 日午前 9:55 UTC](https://community.cybozu.dev/t/topic/5786/8 "2022-03-11T09:55:36Z")

</div>

```
for (i = 0; i <= receipts.length; i++) {

```

の

```
for (var i = 0; i <= receipts.length; i++) {

```

にしたらこのエラーは消えます。が、次のエラーがでます。

'use strict’があるため、変数を宣言なしに使うことができません。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 14 日午前 4:45 UTC](https://community.cybozu.dev/t/topic/5786/9 "2022-03-14T04:45:18Z")

</div>

確かに続けてエラー出ました。

2行目以降、選択分岐でサブテーブル内のフィールド表示・非表示の実装は可能でしょうか。

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account871](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@Legacy\_Account871](https://community.cybozu.dev/u/Legacy_Account871)\
**Post date:** [2022 年 3 月 14 日午前 5:50 UTC](https://community.cybozu.dev/t/topic/5786/10 "2022-03-14T05:50:16Z")

</div>

フィールドの表示／非表示 – cybozu developer network  
[https://developer.cybozu.io/hc/ja/articles/360015513211-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E8%A1%A8%E7%A4%BA-%E9%9D%9E%E8%A1%A8%E7%A4%BA](https://developer.cybozu.io/hc/ja/articles/360015513211-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E8%A1%A8%E7%A4%BA-%E9%9D%9E%E8%A1%A8%E7%A4%BA)  
「テーブル内のすべてのフィールドを非表示にする場合、引数 fieldCode にテーブルのフィールドコードを指定することで、テーブル全体を非表示にできます」

とありますので、テーブルの行単位の制御はできないようですね。

&nbsp;

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/d5c841c3c5a6cb66eed514001c1b45147c9e1f4f.png) [@system](https://community.cybozu.dev/u/system)\
**Post date:** [2024 年 9 月 10 日午前 5:55 UTC](https://community.cybozu.dev/t/topic/5786/11 "2024-09-10T05:55:55Z")

</div>

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。
