我从之前的帖子中重新发布了这个问题,因为当我最初问这个问题时,还不清楚。我不确定我真正需要什么,这导致我得到的回应不适用。
原文:YUI Datatable - 在页面加载后获取 DOM 元素的 ID 并在其他 YUI 事件中使用它
我的问题是这样的:
我有一个 YUI 数据表。我每页有一行下拉菜单。我需要创建一个事件或事件处理程序,或利用一个现有的,它将处理以下内容:
当(曾经)显示每页行的下拉列表发生更改时,事件处理程序应该获取该下拉列表的 id 并将其传递给另一个函数以用作参数。我的数据表有两个 rowsPerPageDropDown(又名 rppDD)元素。我需要这两个功能。
最好在页面加载时也这样做,但现在这是额外的功劳。
我知道“top” rppDD 元素的 id 当前是“yui-pg0-0-rpp12”,但我的问题源于这样一个事实,即如果我向此页面添加任何代码,该 id 将更改(变为“-rpp13”或相似的东西)。这会影响我的其他功能。所以我想在运行时获取 id(无论它可能是什么)并以这种方式使用它,而不是硬编码它。
第二个函数将在下拉更改后立即运行。它将使用下拉列表的 id 来获取当前选择的值并将其分配给要与第三个函数一起使用的变量。
到目前为止,这是我所拥有的:在较早的线程中,有人建议我使用事件 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”。第二个警报显示“未定义”。目的是第二个警报应该提醒任何 rppDD 元素的 id 是(“yui-pg0-0-rpp12”)。
作为参考,我计划将 id 传递给的函数如下。正如我上面提到的,将 [the|either|both] 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();};
任何帮助/建议表示赞赏。