function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Kentaro OkanoKentaro Okano 

repeat内のid取得について

いつもお世話になっています。岡野と申します。

もしご存じの方がいらっしゃいましたら教えてください。

 

visualforceのrepeatタグ内でイテレートされたvidualforceタグのidには、レンダリング時に"~:0:id名"のようなidが付与されると思います。

これを$Componentで取得できるような方法はありませんでしょうか?

repeat内で"{!$Compnent.id}"のようにしても空文字が入ってしまいます。確かに当然という気もしますが・・・。

$Componentで一度に取得できなくても、何かベストプラクティスのような方法があれば教えていただければ幸いです。

 

以上、よろしくお願いいたします。

Best Answer chosen by Admin (Salesforce Developers) 
Kentaro OkanoKentaro Okano

岡本さん。ご回答ありがとうございます。

はい、おっしゃる通りjavaScriptで対象タグのDOM操作を行いたいため今回の質問をさせて頂きました。

そしてやはり簡単にはできそうにないのですね。repeatタグのスコープ内でonchange="script('{!$Component.id}')"というように指定するとイテレートのインデックスが付加されたIDが入れば良いなあ、と期待していましたw

今回はjavaScriptのメソッド内でiDを組み立てて実現させたいと思います。

岡本さん、ありがとうございました!

All Answers

Mitch OkamotoMitch Okamoto

岡野さん

 

こんにちわ。岡本です。

ご質問内でご認識されている通りイタレーション時にコンポーネントのID値を$Componentによって取得する事はできません。

また、レンダリング時には "親componentID値:イタレーション番号:ID値"のIDが付与されます。

 

英語ですがリファレンスドキュメント内のIterating with Component IDsの部分にあります。(すでにご覧になってると思いますが)


http://www.salesforce.com/us/developer/docs/pages/Content/pages_best_practices_accessing_id.htm

 

恐らくJQuery等からDOM操作する際にIDが必要なのだと予想していますが、

現状ですとこのIDの付与法則を使って直接アクセスする以外に無いかと思われます。

Kentaro OkanoKentaro Okano

岡本さん。ご回答ありがとうございます。

はい、おっしゃる通りjavaScriptで対象タグのDOM操作を行いたいため今回の質問をさせて頂きました。

そしてやはり簡単にはできそうにないのですね。repeatタグのスコープ内でonchange="script('{!$Component.id}')"というように指定するとイテレートのインデックスが付加されたIDが入れば良いなあ、と期待していましたw

今回はjavaScriptのメソッド内でiDを組み立てて実現させたいと思います。

岡本さん、ありがとうございました!

This was selected as the best answer