さて、私はYUIDatatableを持っています。それのほとんどは、ガイドの方法がそれを構築するように言っているのとまったく同じです。
ページごとの行の変更を管理するイベントがあります。これは、ページごとの行のドロップダウン要素にリンクされており、ドロップダウンが変更されたときにそのドロップダウンの値をCookieとして保存します。
var onRPPChange1 = YAHOO.util.Event.addListener("yui-pg0-1-rpp24", "change", getRPP_1);
問題は、データテーブルを更新するたびに「yui-pg0-1-rpp24」(ドロップダウンのID)が変更されることです。これを拡張して、ページが読み込まれたときにそのドロップダウンのIDをこのイベントリスナーに動的に挿入し、将来の更新後に編集を続ける必要がないようにします。
IDをキャプチャし、テーブルが読み込まれた後にアラートを出すことができるように構築できましたが、これまでのところ、上記のaddListenerコードにこの関数の結果を含めると機能しません。
var setRPPVars = function() {
YAHOO.util.Event.onAvailable("rppSpan", this.handleOnAvailable, this);
}
var rppSpanIds = new Array();
var rppArray = new Array();
setRPPVars.prototype.handleOnAvailable = function() {
var spans = document.getElementsByTagName("span");
var n = 0;
for(var i=0; i<spans.length; i++){
if(spans[i].id == "rppSpan"){
rppSpanIds[n] = spans[i];
if(n == 0){
rppTopID = rppSpanIds[n].firstChild.id;
rppArray[0] = rppTopID;
}
else if(n==1){
rppBottomID = rppSpanIds[n].firstChild.id;
rppArray[1] = rppBottomID;
}
n++;
}
}
alert(rppTopID);
alert(rppBottomID);
alert(rppArray);
}
var rppEvent = new setRPPVars();
//this is the part that doesn't work:
var onRPPChange0 = YAHOO.util.Event.addListener(rppArray[0], "onchange", getRPP_0);
function getRPP_0(){setRPPVars();oRPP = rppTopID;alert("rppTopID: "+rppTopID); alert("oRPP: "+oRPP);};
あなたが持っているどんな提案も素晴らしいでしょう!
編集:わかりやすくするために、この要素はページごとの行のドロップダウンです。
<span id="rppSpan">
<select id="yui-pg0-1-rpp24" class="yui-pg-rpp-options" title="Rows per page">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</span>