0

好的,所以我有一个 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>
4

1 回答 1

0

改为订阅 YAHOO.widget.Paginator 的 rowsPerPageChange:

http://developer.yahoo.com/yui/docs/YAHOO.widget.Paginator.html#event_rowsPerPageChange

然后你不必找到实际的元素。

于 2012-09-11T16:00:58.763 回答