1

我有兴趣使用“onmouseover”事件使列表框出现和消失。我对 ASP.NET 很陌生,我还不想写 javascript。我正在尝试使用以下代码,它的颜色更改部分有效,但列表框可见性不起作用:

if (!IsPostBack) { Button2.Attributes.Add("onmouseover", "this.style.backgroundColor='Red', ListBox3.style.visibility='visible'"); }

        if (!IsPostBack)
        {
            Button2.Attributes.Add("onmouseout", "this.style.backgroundColor='Blue', ListBox3.style.visibility='hidden'");
        }

我已经尝试过使用和不使用“PostBack”的代码,但仍然没有运气。有人看到我的代码在哪里失败了吗?

谢谢,

DFM

4

1 回答 1

2

尝试:

    if (!IsPostBack)
    {
        btnHide.Attributes.Add("onmouseout", "this.style.backgroundColor='Blue';ListBox3.style.display='none'");
        btnShow.Attributes.Add("onmouseover", "this.style.backgroundColor='Red';ListBox3.style.display='block'");
    }

可见性属性的工作方式与显示属性稍有不同。当可见性属性设置为“隐藏”时,元素被隐藏但布局不受影响,而当将显示属性设置为“无”时,会完全删除可能影响布局的元素。

如果您确实希望在影响布局的情况下修改列表的可见性,您可以使用 div 作为包装器,然后修改其可见性属性。

<div id="wrapper">          
    <asp:ListBox ID="ListBox3" runat="server"></asp:ListBox>            
</div>
<asp:Button ID="btnShow" runat="server" Text="Button" />
<asp:Button ID="btnHide" runat="server" Text="Button" />

修改 ASPX 以切换包含列表框的 div 元素的可见性属性。

if (!IsPostBack)
{
    btnHide.Attributes.Add("onmouseout", "this.style.backgroundColor='Blue';wrapper.style.visibility='hidden'");
    btnShow.Attributes.Add("onmouseover", "this.style.backgroundColor='Red';   wrapper.style.visibility='visible'");
}
于 2009-05-05T01:12:24.943 回答