好的,所以我有一个 YUI 数据表。其中大部分与指南中所说的构建它完全相同。
我有一个控制更改每页行数的事件。它链接到每页下拉元素的行,并在下拉列表更改时将该下拉列表的值保存为 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>