Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не удается раскрыть аккордеон при открытии страницы (https://javascript.ru/forum/jquery/79574-ne-udaetsya-raskryt-akkordeon-pri-otkrytii-stranicy.html)

Simurg 24.02.2020 10:21

Не удается раскрыть аккордеон при открытии страницы
 
Добрый день. Аккордеон работает когда просто нажимашь линки, активная страница подсвечивается, но вот когда переходишь на страницу по ссылке, например через гугл, меню аккордиона не раскрывется. Активная ссылка окрашена, но вот меню аккордеона не раскрыто.
В java все еще новичек.


Вот код HTML

<ul class='left_nav_menu' id='nav_menu_content'>

    <li align=center  style="COLOR:white; background-color:#F06456">Налоги</li>


    <li><a href='#0'> Налоговая система</a>

        <ul>

                    <li><a href="nalog.php?n=101"> Налоговая система</a></li>

                    <li><a href="nalog.php?n=102"> Налоговая система</a></li>

                    <li><a href="nalog.php?n=103"> Налоговая система</a></li>

                    <li><a href="nalog.php?n=104"> Налоговая система</a></li>

                    <li><a href="nalog.php?n=105"> Налоговая система</a></li>

        </ul>
    </li>

</ul>

 

<!-- Вызываем инициализацию скрипта по "onload" пиксельной картинки -->
<img src="http://s3.uploads.ru/xh6sQ.gif" onload="InitFunk()"/>



Вот код javascript

function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;}


var  InitFunk = function() {
	var nav = $("#nav_menu_content");
	var uls = nav.find("ul");

        
	var coci_MENU= getcookie( "MENU" );
	if (coci_MENU) {
	setcookie( "MENU",coci_MENU ,30*3600*24*1000 );

	// тут получаем индексы из куки и перебираем их:
        var showedElems = ( coci_MENU || "" ).split(",");
        for( var i = 0; i < showedElems.length; i++ ) {
            // отображаем при загрузке то что надо.
            $( uls[ showedElems[ i ] ] ).prev('a').addClass('active')  //Добавляем класс к Активным эл-там меню;
            $( uls[ showedElems[ i ] ] ).show();
        }}


        //Добавляем класс к ссылке на текущую страницу, если она есть;
        var Url = document.URL.split('#')[0];
        $('> li ul',nav).find('a:not([href^="#"])').each(function() {
            var S = $(this).attr('href').split('#')[0];
            if(S&&Url.indexOf(S)!=-1) $(this).parent().addClass('a-active');
        });

        nav.find("a").click(function() {
            var Lnk=$(this).attr("href");
            if(Lnk==''||Lnk.indexOf('#')==0) setcookie( "MENU",1 ,-1);
            var self = $(this).next();
            if ( self.length == 0 ) return;


            var showedElems = [];
            uls.each(function( index ){

                    if ( this === self[0] ) {
                        if ( self.css('display') == "none" ) {
                            showedElems.push(index);
                           $(this).prev('a').addClass('active');
                        }  else $(this).prev('a').removeClass('active');
                                $( this ).slideToggle( 200 );return true; } 
                    
                    if ( jQuery.inArray( this, self.parents( "ul" ) ) == -1 ) {
                        $(this).prev('a').removeClass('active');
                        $(this).slideUp(400);
                        return true;
                    }
                    showedElems.push(index);
            });
                // эту переменную  суём в куки,
                setcookie( "MENU", showedElems.join(",") ,30*3600*24*1000 );

                return false;

        });

/* это не работает

предлагали
добавьте в скрипт после вашего кода

$(function () {
    $('#nav_menu_content li>a').eq(0).click();
});
*/

    
}



Вот мой сайт. Вот линк например

https://www.e-muhasib.az/muhasib.php?n=711

Меню аккордеона при этом не раскроет.


Часовой пояс GMT +3, время: 21:45.