2012-08-10 46 views
1

我有一个数据列表,里面有一个下拉列表和超链接,它是动态加载的,意思是如果有一个用户,那么会有一个下拉列表和一个超链接,并且有 两个用户然后会有两个下拉菜单和两个超链接。我的要求是当一个onchange事件发生在一个下拉列表中时,我希望超链接的id与javascript中的下拉列表相关联。任何人都可以帮助我。使用javascript获取数据列表内的超链接的编号

感谢

+4

请发布您的代码。 – Polyov 2012-08-10 08:59:19

+0

向我们展示动态HTML看起来像什么?我们无法猜出它的样子。 – jfriend00 2012-08-10 09:03:01

+0

我想知道如何使用JavaScript获取datalist内的超链接的id – ranjenanil 2012-08-10 09:06:54

回答

0

可以使用Control.ClientIDMode财产

可能的值:

  • 自动识别
  • 静态
  • 继承(默认)
  • 预测(在使用数据绑定场景)这是您应该使用的值

例子:

<script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script> 
<script type="text/javascript"> 
    function ddlChanged(sender) { 
     var senderID = $(sender).attr("id"); 
     var idSplitted = senderID.split("_"); 
     var currentHyperLinkID = "dl_hl_" + idSplitted[2]; 
     var currentHyperLink = $("#" + currentHyperLinkID); 

     alert(currentHyperLink.text()); 
    } 
</script> 
    <asp:DataList runat="server" ID="dl" ClientIDMode="Predictable" DataSourceID="ods"> 
     <ItemTemplate> 
      <asp:DropDownList runat="server" ID="ddl" onchange="ddlChanged(this);"> 
       <asp:ListItem Text="text1" /> 
       <asp:ListItem Text="text2" /> 
      </asp:DropDownList> 
      <br /> 
      <asp:HyperLink NavigateUrl="http://www.google.com" runat="server" Text='<%# Eval("QuestionText") %>' ID="hl" /> 
     </ItemTemplate> 
    </asp:DataList> 

这将导致所有的子控件将客户端ID的使用此格式生成:

  <select name="dl$ctl00$ddl" id="dl_ddl_0" onchange="ddlChanged(this);"> 
     <option value="text1">text1</option> 
     <option value="text2">text2</option> 

    </select> 
      <br /> 
      <a id="dl_hl_0" href="http://www.google.com">QuestionText1</a> 

例如:

dl_hl_0 

其中:

  • DLDataList
  • HL的名称是HyperLink控制
  • ##的名称。这将是所有绑定控件产生的DataList内的唯一号码,对所有的控制每行中相同数量的

注:您应该考虑使用ListView控制,而不是DataList控制。后者是一个传统控件,并不具有ListView公开的所有特征。

例如,有一个属性叫做:ClientIDRowSuffix,用于插入主键作为客户端ID的一部分。此属性不可用DataList控制