如何在 JavaScript 中访问中继器标签值
本文关键字:中继器 标签 访问 JavaScript | 更新日期: 2023-09-27 18:31:19
这是我的javascript
function btnEditClick() {
alert(document.getElementById('<%=LblRefPhyID.ClientID %>').value);
}
<asp:Repeater ID="repeaterRefPhysicianList" runat="server">
<ItemTemplate>
<tr onclick="selectRow(this);">
<td class="csstablelisttd" style="display: none;">
<asp:Label ID="LblRefPhyID" runat="server" Text='<%#Eval("Ref_Phy_ID")%>'></asp:Label>
</td>
在客户端单击编辑按钮时,我必须将 RefphyId 传递到另一个页面,我该怎么做..
中继器。这意味着将对数据绑定集合中的每个项重复ItemTemplate
。
这有一个警告:ID应该是唯一的。因此,当您说您的asp:Label
的ID为LblRefPhyID
,ASP.NET 自动为您帮助为最终到达生成的HTML的中继器的每个实例生成唯一的ID。这些生成的 ID 将基于您的原始值 LblRefPhyID
,但事实并非如此,因此中继器之外的普通document.getElementById()
将不起作用。
有很多方法可以解决这个问题,您需要做的第一步是实际编写一些代码,将自动生成的 ID 考虑在内。也许写一些Javascript来使用LblRefPhyID.ClientID
缓存ID,也许可以动态地onclick
,无论如何。
编辑
而且,哦,是的,@Pointy说label
元素没有值,只有它们的内部HTML是完全正确的。我不明白为什么他因为给出正确的回答而被否决。
尝试设置 css 类而不是 id 并按类名绑定元素单击事件。我为此使用 jquery:
$(document).ready(function(){
//bind click event on our label class
$('.lblRef').live('click', function(){
alert($(this).text());
});
});
这在 asp.net 页面代码中:
<asp:Label CssClass="lblRef" runat="server" Text='<%#Eval("Ref_Phy_ID")%>'></asp:Label>
HTML <label>
元素没有"值"。 它们确实有内容:
alert(document.getElementById('<%=LblRefPhyID.ClientID %>').innerHTML);
最好的方法是检查客户端中继器生成的 id 模式是什么,然后您可以使用该 id 通过 innerHTML 获取标签的值。例如,在您的案例中生成的ID可能是: repeaterRefPhysicianList_LblRefPhyID_01
直到源中的行数。
因此,您可以将此信息与innerHTML一起使用来获取标签的值。总而言之,只需检查您的html页面,您就会知道下一步该怎么做:)