将ASP.NET标签ID传递给Javascript

时间:2015-02-11 21:56:20

标签: javascript asp.net

我可以在使用以下代码时更改Label值

  document.getElementById('<%=lblDropdownValue.ClientID %>').innerHTML =     ddl.value;

但是我想将它作为参数传递,如下所示,但它似乎不起作用。

<table>
    <tbody>
        <tr>
            <td>
              <asp:DropDownList id="ddlProducts" runat="server" 
           onclick="myfunction(this,'<%=lblDropdownValue.ClientID %> "')">

                <asp:ListItem Selected="True" Value="-1"> Please Select </asp:ListItem>
                <asp:ListItem Value="Car"> BMW </asp:ListItem>
                <asp:ListItem Value="Music"> MP3 </asp:ListItem>

             </asp:DropDownList>

           </td>
           <td>
               <asp:Label Text="" id="lblDropdownValue" runat="server"/>
           </td><td></td>
       </tr>

   </tbody>

</table>
</div>
</form>
<script>
   function myfunction(ddl, lblText)
   {
      document.getElementById("'"+lblText+"'").innerHTML = ddl.value;          
   }
</script>

2 个答案:

答案 0 :(得分:1)

将其放在后面的代码中:

public void Page_Load( ... ) {

    ddlProducts.Attributes["onclick"] = "myfunction(...)";

}

并从ASPX中删除onclick

原因是您希望在客户端附加onclick。你现在拥有的是一个被评估为服务器端的属性,因此它无法正确地传达给客户端。

答案 1 :(得分:1)

在我添加的代码中

   protected void Page_Load(object sender, EventArgs e)
        {
            ddlProducts.Attributes["onclick"] = "myfunction(this,"+lblDropdownValue.ClientID +");";

        }

并将JavaScript更改为

 <script>
        function myfunction(ddl, lblText)
        {            
           lblText.innerHTML
            = ddl.value;          
        }
    </script>