为什么 Javascript 函数调用在从代码隐藏更改可见性后不起作用

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

本文关键字:可见性 不起作用 隐藏 代码 Javascript 函数调用 为什么      更新时间:2023-09-26

我有两个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隐藏元素

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