我前台代码是这样的
<script language="javascript" type="text/javascript">
function sel()
{
document.getElementById("<%=Button1.ClientID %>").click();
}
function show()
{
alert(document.getElementById("Hidden1").value);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<a href="javascript:void(0)" onclick="sel();show();">asdfdsf</a>
<asp:Button ID="Button1" runat="server" style="dispaly:none" Text="Button"
onclick="Button1_Click1" />
<input id="Hidden1" type="hidden" runat="server" />
</div>
</form>
</body>
</html>
后台代码是这样的:
protected void Button1_Click1(object sender, EventArgs e)
{
Hidden1.Value = "123333";
}
就是我想点找链接的时候显示出Hidden1的值,但是现在有个问题,我这样做的时候是要点两次才显示正确的值,我要的是只点一次就显示正确的值,高手帮帮忙!但必须是用JS调用后台的方法!
这样做是没错了,但是我JS里还有一个方法,原本是这样的:我点找链接,调用后台方法,然JS再根据后台获得的变量来判断这个变量的值,这个变量就一定就是0和1,如果是0,我把一张能修改的表显示出来,如果是1我把一张不可以修改的表显示出来!所以我的方法应该没错吧!
追答上面已经说过了。点了链接首先会调用sel,sel里触发了Button1的单击事件,这时页面就会刷新,页面一旦刷新show就不会被执行,因此你看不到希望的结果。所以必须从后台调用show以便在页面刷新后执行show。
追问那我该如何获取在show方法里获取后台的变量呢,先调用方法,再获取变量
追答你目前用的hidden方法就是可以的。 你还可以在RegisterStartupScript时直接把变量传给方法做参数。
例如:
ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "show('123333');", true);
此时show可以改为
function show(arg)
{
alert(arg);
}
你也可以尝试用ajax,这样不会刷新,体验也好。