【问题标题】:Javascript won't work on Html server control?Javascript 不能在 Html 服务器控件上工作?
【发布时间】:2011-12-18 10:44:12
【问题描述】:

我正在用ASP.Net写一个网站。

我会有很多html generic controls,比如<div> <span>等等..

我有一些onclick javascript 函数,onmouseover javascript 函数..

他们工作得很好..

那我需要在服务器端控制它们。

所以,我添加runat="server"..

在那之后,所有的 javascripts 都不再工作了..

我知道它们无法正常工作,因为所有事件现在都返回到服务器端。

那么,有没有办法让它们工作?

例如,

<div id="myDiv1" onclick="myfunction(para1)"><img src="..." /></div>

上面的代码正在运行..

<div id="myDiv1" runat="server" onclick="myfunction(para1)"><img src="..." /></div>

上面的代码不起作用...

我可以让它工作,可能通过

<div id="externalDiv1" onclick="myfunction(para1)"><div id="myDiv1" runat="server" ><img src="..." /></div></div>

还有其他方法吗?

【问题讨论】:

  • 代码?你的建议没有真正的意义。
  • 什么 javascript 看起来不起作用?
  • 好吧.. javascript是改变其标签内的css的类。

标签: asp.net html servercontrol


【解决方案1】:

我假设您使用 document.getElementById() 通过其 id 获取元素。如果你使用母版页,服务器控件的ID会在渲染到页面后改变,这种情况下,你必须使用它的ClientID 例如

var myDiv1 = document.getElementById("<%= myDiv1.ClientID %>");

【讨论】:

    【解决方案2】:

    就javascript而言,服务器端或客户端控件没有区别。所有服务器端控件最终都呈现为普通的 HTML 控件。如果您的 javascript 函数不起作用,可能是因为您通过错误的 id 访问它们,因为通过使它们成为服务器端控件,它们现在可以具有遵循 &lt;parent_id&gt;_&lt;control_id&gt; 之类的模式的 id。

    例如,像这样声明的 span 元素:

    <span id="mylabel" runat="server"> testing</span>
    

    可能最终呈现为:

    <span id="MainContent_mylabel"> testing</span>
    

    ASP.NET 4.0 有一个名为 CliendIDMode 的功能,可以将其设置为 static,这意味着您在标记上的 id 在页面呈现后将保持不变。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2012-10-03
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 2021-10-01
      • 2014-06-23
      相关资源
      最近更新 更多