最初に質問したときに不明確だったため、以前の投稿からこの質問を再投稿します。実際に何が必要なのかわからなかったので、得られた回答が当てはまりませんでした。
オリジナル: YUI Datatable - ページが読み込まれた後に DOM 要素の ID を取得し、他の YUI イベントで使用する
私の質問はこれです:
YUI Datatable があります。ページごとの行のドロップダウンがあります。以下を処理するイベントまたはイベント ハンドラーを作成するか、存在するものを利用する必要があります。
ページごとの行を表示するドロップダウンが変更されると、イベントハンドラーはそのドロップダウンの ID を取得し、それを別の関数に渡して引数として使用する必要があります。私のデータテーブルには 2 つの rowsPerPageDropDown (別名 rppDD) 要素があります。両方にこの機能が必要です。
ページのロード時にもこれを行うことが望ましいですが、今のところは余分なクレジットです。
「トップ」の rppDD 要素の ID が現在「yui-pg0-0-rpp12」であることはわかっていますが、このページにコードを追加すると、その ID が (「-rpp13」または似たような)。それは私の機能の残りを捨てます。そのため、ハードコーディングするのではなく、実行時にID(それが何であれ)を取得して、そのように使用したいと考えています.
2 番目の関数は、ドロップダウンが変更された直後に実行されます。ドロップダウンの ID を使用して現在選択されている値を取得し、それを変数に割り当てて、3 番目の関数で使用します。
これまでのことは次のとおりです。 前のスレッドで、rowsPerPageChange イベントを使用するよう提案されました。これはある程度しか機能しません。そのイベント ハンドラー内に単純な "hello world" アラートを配置すると、ページが読み込まれたときにのみアラートが発生することが証明されます。クリックしてドロップダウンを別のものに変更すると、アラートが表示されなくなります。
以下は、これをテストするために使用している関数とコードです。
var getRppValue = function() {
YAHOO.util.Event.addListener("rowsPerPageChange", getRppValue.prototype.handleOnAvailable());
}
var rppDD_ID = "";
getRppValue.prototype.handleOnAvailable = function() {
alert("hello world");
alert(this.id); //should alert "yui-pg0-0-rpp12"
//rppValue = this.id;
}
var rppEvent = new getRppValue();
このイベントは、ページが最初に読み込まれたときにのみ発生/処理されることがわかります。そのとき、最初のアラートは予想どおり「hello world」をアラートします。2 番目のアラートには「未定義」が表示されます。その意図は、2 番目のアラートが、rppDD 要素の ID ("yui-pg0-0-rpp12") が何であれアラートを出すことです。
参考までにidを渡す予定の関数は以下の通りです。[|どちらか|両方] rppDD 要素の現在の値を変数 oRPP に割り当てることは、上で述べたように意図されています。次に endDrag() 関数 (oRPP を使用) を呼び出します。
ID をハードコードするとしたら、次のようになります。
function getRPP_0(){oRPP = g("yui-pg0-0-rpp12").value;endDrag();};
私はそれを動的にしたい:
function getRPP_0(){oRPP = g(rppDD_ID).value;endDrag();};
ヘルプ/提案をいただければ幸いです。