アクションボタンの表示・非表示

https://developer.cybozu.io/hc/ja/community/posts/201051884-%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%8CDOM%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%82%8B%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

 

上記のコミュニティも参考にして、自分なりにも検証しているのですが、それでも何か策がないものかと思い、書き込みをさせていただきます。

 

やりたいことは、詳細表示画面で、レコードの内容に応じて「アクション」ボタンの表示・非表示をコントロールするということです。

‘app.record.detail.show’ の中でレコードの内容を確認して、

var actionMenuWrapper =document.getElementsByClassName('gaia-app-statusbar-actionmenu-wrapper')

if (record['条件'].value!=="表示可") {
actionMenuWrapper[0].style.display="none";
var actionComment = document.createElement('span');
actionComment.innerHTML
=' アクションボタンは消しました';
actionMenuWrapper[0].parentNode.appendChild(actionComment);
}

とすることで、強引ながら、アクションボタンの表示・非表示を切り替えることはできました。

しかし、これでは複数のアクションボタンがある場合に、すべてのボタンを表示するか、すべて非表示にするかしかできません。個々のボタンの制御をしようとしたら、アクションボタンがDOMに追加されていないせいか .style.display がunedefined だといってエラーになってしまいます。

何か、回避策がないものかと考えているのですが、ご存知の方がいらっしゃいましたらお知らせください。

アクションボタンと同じ機能を持つボタンをAPIで自分でつくって配置してもいいのですが、できれば標準機能でできることは、標準機能を活かしたい…のです。

 

どうぞよろしくお願いいたします。

 milkyway0307さん

パッと消せないかと試してみたのですが、書いているように全部消えてしまいますね。

やはり、要素の追加タイミングがJSやCSSの動作あとなので、特定のアクションボタンを

消すというのは難しいかもしれないですね。

アクションの処理的にはPOST処理なので、ボタンを作っちゃったほうが速そうというイメージでした。

milkyway0307さん

当方初心者なのですが、全アクションボタンに対しての一括表示切替が実現したくここに辿り着きました。
JSの全文ソースを教えて頂けないでしょうか。 何卒、よろしくお願いいたします。

申し訳ありません。ここの書き込みは二重投稿になってしまっています。リンクを張るとそういうことがあるのでしょうね・・・。

(なぜか「承認待ち」ということになって、ペンディングされていたのを、うまくいかないからといってもう一度投稿してしまったためです。)

 

私としては↓で解決してしまっているのですが、y.sanoさんのリクエストについても、↓が参考になるかと思います。それでも分からない場合は、下のトピにて改めてお問い合わせください。

https://developer.cybozu.io/hc/ja/community/posts/115010129606-%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%9C%E3%82%BF%E3%83%B3%E8%A1%A8%E7%A4%BA-%E9%9D%9E%E8%A1%A8%E7%A4%BA%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88

私も参考にさせてもらいました。

 なるほどですね。

ちょっと待つという発想がなかったです。