繁体   English   中英

为什么更改背后代码的可见性后Javascript函数调用不起作用

[英]Why a Javascript function call doesn't work after changing visibility from code behind

我有这两个JS函数的图像:

<div id="myDiv" runat="server" visible="false">
<asp:Image ID="myImage" runat="server" ImageUrl="~/....png" 
                    onmouseover="someFunc();" onmouseout="someFunc2();" />
<div/>

当我单击某个按钮时,将myDiv visible更改为true
但是随后onmouseoveronmouseout不起作用。
如果默认情况下myDiv是可见的,那么它将起作用。 那么如何使这两个函数调用w
更改可见度后还是ork?

这在更新面板中,可见性通过ajax更改。

为此,请使用设置display:none在代码后面,而不是Visible=false

<div id="myDiv" runat="server">
<asp:Image ID="myImage" runat="server" ImageUrl="~/....png" 
                    onmouseover="someFunc();" onmouseout="someFunc2();" />
<div/>

在后面的代码中

myDiv.Style["display"] = "none";// hide
myDiv.Style["display"] = "block";//show
//myDiv.visible=false;// dont work

试试这个(默认隐藏)

<div id="myDiv" runat="server" style="display:none;">
<asp:Image ID="myImage" runat="server" ImageUrl="~/....png" 
                onmouseover="someFunc();" onmouseout="someFunc2();" />
<div/>

在您的按钮内单击事件,我想这是在代码后面

protected void youBtn_Click(object sender, EventArgs e)
{
   if(your condition) // show
   {
      myDiv.Attributes.Add("style","display:block");
   }
   else // hide
   {
     myDiv.Attributes.Add("style","display:none");
   }
}

Asp.net不会呈现不可见的元素。 这样可以节省字节。

这仅发生在服务器元素上。 您可以通过删除“ runat =“ server””使其成为客户端元素来解决此问题。 您可以使用display: none隐藏元素display: none

<div id="myDiv" style="display: none">
<asp:Image ID="myImage" runat="server" ImageUrl="~/....png" 
                    onmouseover="someFunc();" onmouseout="someFunc2();" />
<div/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM