はじめに
先日こんな記事を書きました。
kintoneの内部パラメータ「フィールドID」を使いこなす
入力するフィールドはこれで全部行けるんですが、
「ラベルフィールド」のDOMを取得したいときは、これでも無理。
どうやらラベルには、フィールドIDがそもそも付与されないっぽいです。
解決方法
100% DOM操作で行います。
例のごとく、今後動かなくなる可能性は大なので自己責任で。
div
タグが多重になってますが、.control-label-field-gaia
クラスがラベル1個単位の大元のようです。
jQueryを使わずに書くなら、以下の2ステップで。
- 全ラベルを取得
- その中から特定の文字列のラベルを探す
こんな風に用途別に関数を作ってやると、取り回しやすいと思います。
// 全ラベルの取得
const allLabelElements = () => Object.values(document.querySelectorAll('div.control-label-field-gaia'))
// 特定の文字列と一致するラベルを1つ抽出
const findLabelElement = label => allLabelElements().find(_ => _.textContent === label)
// 特定の文字列を含むラベルを複数抽出
const filterLabelElements = label => allLabelElements().filter(_ => _.textContent.includes(label))
使用例
アプリストアの「旅費精算申請」の場合
「旅費」と一致するラベル
マッチしたElementオブジェクトが返る
「旅費」を含むラベル
マッチした3つのElementが配列で返る
- 「旅費精算申請」にマッチ
- 「旅費」にマッチ
- 「旅費合計(円)」にマッチ
あとは好きなようにhackしてくださいませ!
ではまた〜。