Skip to content
  • Recent
  • Tags
  • Popular
  • Users
  • Search
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

Lay Theme Forum

  1. Home
  2. General Discussion
  3. accordeon

accordeon

Scheduled Pinned Locked Moved General Discussion
2 Posts 2 Posters 92 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    ErEs
    wrote on last edited by ErEs
    #1

    Re: Accordion Bug

    hello, i managed to put an acordeon on my website using custom code.
    it is working, as long as i am on that site, where the acordeon is placed. when i navigate to a different (project-)site and come back the acordeon is always fully unfolded. there is still no way to close it in that situation, which normally works fine. the only thing that helps is refreshing the site.

    how can i fix it? is there something wrong with my code?
    -> www.sanderrobert.de/approaching-visual/

    <script>
    
     var toggleStates = [];
        var buttons = document.getElementsByClassName("panelbutton");
        var panels = document.getElementsByClassName("panel");
        
        function ApplyButtonState(index)
        {
            var panel = panels[index];
            
            if (toggleStates[index])
            {
                panel.style.maxHeight = '800px';
                panel.style.margin = null;
            }
            else
            {
                panel.style.maxHeight = 0;
                panel.style.margin = 0;
            }
        }
    
            
        if (buttons.length != panels.length)
        {
            console.error('panelbutton and panel count mismatch!');
        }
        else
        {
            for (var i = 0; i < buttons.length; i++) {
         
                var button = buttons[i];
                toggleStates.push(false);
                
                ApplyButtonState(i);
                    
                button.toggleStateIndex = i;
                button.addEventListener("click", function(evt) {
                        
                
                    for (var j = 0; j < toggleStates.length; j++)
                    {
                        var toggleStateIndex = evt.currentTarget.toggleStateIndex;
                        
                        var foldedOut = toggleStateIndex === j;
                        if (foldedOut && toggleStates[j])
                            foldedOut = false;
                   
                        toggleStates[j] = foldedOut;
                        ApplyButtonState(j);
                    }
             
                });
            }
        }
      
    
    </script>
    
    1 Reply Last reply
    0
    • arminunruhA Offline
      arminunruhA Offline
      arminunruh
      Global Moderator
      wrote on last edited by
      #2

      you need to use the newpageshown event to execute your javascript everytime a page is loaded

      i think adding this to your js should work:

      window.laytheme.on("newpageshown", function(){
      // reset variables
      toggleStates = [];
      buttons = document.getElementsByClassName("panelbutton");
      panels = document.getElementsByClassName("panel");
      ApplyButtonState();
      });
      
      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      I also code custom websites or custom Lay features.
      šŸ’æ Email me here: šŸ’æ
      info@laytheme.com

      Before you post:
      1. When using a WordPress Cache plugin, disable it or clear your cache.
      2. Update Lay Theme and all Lay Theme Addons
      3. Disable all Plugins
      4. Go to Lay Options → Custom CSS & HTML, click "Turn Off All Custom Code", click "Save Changes"

      This often solves issues you might run into

      When you post:
      1. Post a link to where the problem is
      2. Does the problem happen on Chrome, Firefox, Safari or iPhone or Android?
      3. If the problem is difficult to explain, post screenshots / link to a video to explain it
      Online Users
      Forgot your key, lost your files, need a previous Lay Theme or Addon version? Go to www.laykeymanager.com
      laytheme.com
      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Recent
      • Tags
      • Popular
      • Users
      • Search