0

我有一堆控件,我根据网页中的操作显示、隐藏、启用和禁用它们。一切正常,直到我把它们放进手风琴。现在我无法让 Javascript 能够更新它们的状态。我有一个小例子

这是Javascript

 <script type="text/javascript">
  var ctrl = document.getElementById('<%= btmRocp.ClientID %>');

    function ShowPanel(control)
{
    alert('<%= btmRocp.ClientID %>');
    ctrl.disabled = true;
}
</script>   

这是手风琴

 <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <cc1:Accordion  ID="MyAccordion"
                        runat="Server"
                        SelectedIndex="0"                      
                       >
         <Panes>
            <cc1:AccordionPane ID="accordianPane0" runat=server>
            <Header>Create New Report </Header>
            <Content>a
            <asp:Button ID="Button1"  onmouseup="ShowPanel('') " runat="server" Text="Button" />            
            <asp:Button ID="btmRocp" runat="server" Text="Button" />
            </Content>
            </cc1:AccordionPane>
            <cc1:AccordionPane ID="accordianPane1"  runat=server>
            <Header>Create New Report </Header>
            <Content>b</Content>
            </cc1:AccordionPane> 
            </Panes>

        </cc1:Accordion>

我很想知道我在这里做错了什么,警报会打印出正确的 ID。

如果我在将“this”对象传递给函数的地方做某事,我可以禁用该按钮,但我确实需要它来禁用或隐藏 10 个对象

有人有想法吗?

http://www.riconllc.com/accordian.zip上的示例代码

4

1 回答 1

0

Accordion 的默认状态是什么?崩溃了?我不知道手风琴是如何工作的,但我怀疑它正在修改 HTML DOM,使得当页面第一次加载时“btmRocp”实际上并不存在于页面本身上,直到它变为“可见”。也就是说,它可能会根据手风琴状态将控件注入和退出页面。

找出这种行为的最佳选择是插入“调试器”;在适当的时间点将语句添加到您的页面中,以便在这些时间点检查实时 DOM。

<textbox id="debugbox" onblur="this.value = eval(this.value);"></textbox>

也是在页面上使用脚本的好方法。

于 2008-12-18T19:07:22.973 回答