About smegy things


by smeg_head
カレンダー
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

ASP.NETでのJavaScript

JavaScriptでチェック処理などを行なう手前、
JavaScriptから、Repeater内のコントロールにアクセスする
必要がある。
Repeater内の自動生成されるコントロールのidは、
repeaterのidと行番号とコントロールのidを__ctlとかで
連結したものになっていました。

本当は、__ctlとかに依存しない形でアクセスできるの
が一番よいんだけど、以下みたいな関数を使うことで、
悪い依存を関数内にとじこめて、よしとしてしまいました。


// repeater内のbuttonのidが指定の形式のボタン配列を返却
// 最初のfromのみを対象とする。
function getButtonsById(repeaterId, buttonId) {
 prefix = repeaterId + "__ctl";
 sufix = "_" + buttonId;
 var buttons = new Array();
 var i, n;
 for (i = 0, n = 0; i < document.forms[0].elements.length; i++) {
  var c = document.forms[0].elements[i];
  if (c.type == "button" || c.type == "submit") {
   if (c.id.substring(0, prefix.length) == prefix &&
   c.id.substring(c.id.length - sufix.length, c.id.length) == sufix) {
    buttons[n++] = c;
   }
  }
 }
 return buttons;
}


documentは本当は半角です。半角だとblogに怒られましたので;;
この問題の正しい解決方法ってどんな方法なんでしょう?
[PR]
by smeg_head | 2005-10-16 19:51 | dotnet