문제

웹 페이지의 동작을 기반으로 표시, 숨기기, 활성화 및 비활성화 된 많은 컨트롤이있었습니다. 내가 아코디언에 넣을 때까지 모든 것이 효과가있었습니다. 이제 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를 인쇄합니다.

"이"객체를 함수에 전달하는 곳에서 무언가를하면 해당 버튼을 비활성화 할 수 있지만 실제로 비활성화하거나 10 개 객체처럼 숨기려면 필요합니다.

누구든지 아이디어가 있습니까?

샘플 코드 http://www.riconllc.com/accordian.zip

도움이 되었습니까?

해결책

아코디언의 기본 상태는 무엇입니까? 무너 졌나요? 나는 아코디언이 어떻게 작동하는지 모르겠지만, 페이지가 처음로드 될 때 "btmrocp"가 실제로 페이지 자체에 존재하지 않도록 "보이실"이 될 때까지 HTML dom을 수정하고 있다고 생각합니다. 즉, 아코디언 상태에 따라 페이지로 컨트롤을 주입 할 수 있습니다.

이 동작을 알아내는 가장 좋은 방법은 "디버거"를 삽입하는 것입니다. 적절한 지점에서 페이지에 대한 명세서를 작성하여 해당 시점에서 라이브 DOM을 검사합니다.

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

페이지에 스크립트를 사용하여 원숭이를 만드는 좋은 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top