我可以在使用以下代码时更改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>
答案 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>