无法获取文档.GetElementById工作正常
Cannot get document.GetElementById working right
我正试图从asp服务器按钮的onClick事件中调用一个javascript函数。我在更新面板中有这个按钮和一个标签。
在aspx:中
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="Button1" runat="server"
style="z-index: 1; left: 49px; top: 119px; position: absolute; height: 26px;" Text="Button"
onclick="Button1_Click"/>
<asp:Label ID="Label1" runat="server" Text="l1"
style="position:absolute; top: 123px; left: 127px;"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
代码背后:
protected void Button1_Click(object sender, EventArgs e)
{
ScriptManager.RegisterClientScriptBlock(this, typeof(Button), "me", "me()", true);
}
aspx:中的Javascript
<script type="text/javascript">
function me()
{
document.getElementById('<%= Label1.ClientID %>').value="clicked";
}
</script>
我所要做的就是点击按钮,标签的值应该改为"点击",这并没有发生,在firebug中也没有错误。我错在哪里了?
p.S:我这样做是为了学习从代码背后调用javascript函数。因此,对代码的任何优化都是受欢迎的。(事实上,我稍后在JS函数中有很多代码要实现,所以请提供适当的建议)
据我所知,Label控件被呈现为<div>
或<span>
(记不清了),而不是文本输入字段。所以你应该设置它的innerHTML
属性,而不是value
:
document.getElementById('<%= Label1.ClientID %>').innerHTML = 'clicked';
或者简单地在服务器端进行,而不是注册客户端回调:
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "clicked";
}
更新:
正如评论部分所要求的,以下是如何从服务器向客户端回调传递参数:
protected void Button1_Click(object sender, EventArgs e)
{
string param1 = ...
double param2 = ...
int param3 = ...
var serializer = new JavaScriptSerializer();
ScriptManager.RegisterClientScriptBlock(
this,
typeof(Button),
"me",
string.Format("me({0})", serializer.Serialize(new { param1 = param1, param2 = param2, param3 = param3 })),
true
);
}
以及您的回拨:
function me(values) {
// you could use values.param1, values.param2, values.param3, ... here
}
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- ajaxToolkit PopupControlExtender不工作.过时的
- HTML标记在脚本标记中工作
- javascript扫雷器floodfill算法不能正常工作