如何在 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 传递到另一个页面,我该怎么做..

如何在 JavaScript 中访问中继器标签值

它是一个

中继器。这意味着将对数据绑定集合中的每个项重复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页面,您就会知道下一步该怎么做:)