通过幻灯片从ASP标签获取ID

时间:2019-07-05 10:02:13

标签: javascript html asp.net

我在这样的幻灯片中有一个<label ID="lblContent">

<asp:Panel ID="pnlResult" runat="server" Visible="false" class="slideshow-container1" style="height:300px;margin-left: 0px;">
<asp:DataList  ID="dlResults" runat="server" OnItemDataBound="dlResults_ItemDataBound">
  <ItemTemplate> 
    <div class="mySlides1>
      <a href="AnotherPage.aspx">
        <asp:Label  ID="lblContent" runat="server" Text="" ></asp:Label>
      </a>
    </div>
  </ItemTemplate>
</asp:DataList>
    <a class="prev1" onclick="plusSlides1(-1)">&#10094;</a>
    <a class="next1" onclick="plusSlides1(1)">&#10095;</a>
</asp:Panel>

我的网页会自动生成具有相同id的跨度,总是像这样

<span id="ctl00_ContentPlaceHolder1_dlResults_ctl02_lblContent"> bla bla </span>
<span id="ctl00_ContentPlaceHolder1_dlResults_ctl01_lblContent"> bla bla </span>

然后,我们看到幻灯片播放时,每次ct101ct102 ...时ID都会增加

我想每次都标识当前ID,因为我需要在href中调用它

是否可以用JS或其他方式执行此操作,非常感谢!

1 个答案:

答案 0 :(得分:0)

在ItemDataBound事件中,您可以获取创建的每个标签的ClientId,例如

protected void dlResults_ItemDataBound(object sender, DataListItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
      Label contentLabel = (Label)e.Item.FindControl("lblContent");
      someGlobalString += "var contentLabel = document.getElementByID(\"" + contentLabel.ClientId + "\");\r\n";
   }
}

然后您可以使用它动态创建Javascript,然后将其注入到页面中,例如

protected void Page_PreRender(object sender, EventArgs e)
{
   if (!(Page.ClientScript.IsStartupScriptRegistered("MyScript")))
      Page.ClientScript.RegisterStartupScript(GetType(), "MyScript", someGlobalString, true);
}