YUI数据表-在页面加载后获取DOM元素的ID,并在其他YUI事件中使用它



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

订阅YAHOO.widget.Paginator的rowsPerPageChange:

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

那么您就不必找到实际的元素。

最新更新