为什么javascript函数调用在从后面的代码更改可见性后不起作用

时间:2013-11-15 12:15:13

标签: c# javascript asp.net javascript-events 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更改。

3 个答案:

答案 0 :(得分:2)

要使其发挥作用,请在代码后面设置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

答案 1 :(得分:1)

试试这个(默认隐藏)

<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");
   }
}

答案 2 :(得分:0)

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/>