Advertisement
Udoro

Autoplay tabs JavaScript

Jul 29th, 2022 (edited)
1,766
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.                 var speed = 2000; // smaller is faster
  2.                 var counter = 0;           
  3.                 var tabWrapper = document.getElementById('tab_wrapper');                       
  4.                 var tabs = document.querySelectorAll('#tab_wrapper .oxy-tab');
  5.                 var tabsClass = 'oxy-tab';
  6.                 var tabContents = document.querySelectorAll('#tab_wrapper .oxy-tab-content');
  7.                 let isMouseHover = false;
  8.                
  9.                
  10.                
  11.  
  12.                 // check for mouse leave
  13.                 tabWrapper.addEventListener("mouseleave", function (event) {
  14.                    
  15.                     isMouseHover = false
  16.                    
  17.                 });
  18.                
  19.                
  20.                 // check for mouse over
  21.                 tabWrapper.addEventListener("mouseover", function (event) {
  22.                    
  23.                     isMouseHover = true
  24.                    
  25.                 });    
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.                     // loop through each tab
  33.                 tabs.forEach(tab => {
  34.                    
  35.                     // get tab parent                  
  36.                     var parent = tab.parentNode;
  37.                    
  38.                     // get index (order number) of each tab            
  39.                     let index = Array.prototype.indexOf.call(parent.children, tab);
  40.                    
  41.                     // add a special class to each tab based on their index
  42.                     //by appending the index number incrementally for each tab
  43.                     tab.classList.add(tabsClass + (index + 1))
  44.                    
  45.                    
  46.                     //ensure autoplay resumes from current active tab after being clicked
  47.                     tab.addEventListener("mouseup", function(e) {
  48.                        
  49.                         counter = index + 1;
  50.                        
  51.                     })
  52.                    
  53.                    
  54.                    
  55.                             })
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                 // function to autoplay the tabs
  64.                 function autoPlayTabs() {
  65.  
  66.                     // don't run function if mouse is hovered on the tab wrapper
  67.                     if(isMouseHover) {
  68.                        
  69.                         return;
  70.  
  71.                     }
  72.  
  73.                     // increment counter by 1
  74.                     counter++
  75.  
  76.                     // reset counter to 1 if it's greater than the number of tabs
  77.                     if(counter>tabs.length){
  78.                        
  79.                         counter = 1;
  80.                        
  81.                     }
  82.                    
  83.  
  84.                     // set active tab to the tab that matches the class + counter value
  85.                     let activeTab = document.querySelector('.' + tabsClass + counter)
  86.                     //console.log(activeTab)
  87.  
  88.                     // perfom a click action on the active tab to switch the tab content
  89.                     activeTab.click()
  90.                    
  91.                 }
  92.                
  93.                
  94.                
  95.                
  96.                
  97.                 function startInterval() {
  98.  
  99.                     //call autoPlayTabs function
  100.                     var i = setInterval(autoPlayTabs, speed);
  101.                 }
  102.  
  103.            
  104.            
  105.  
  106.                 //call startInterval function after page load
  107.                 document.addEventListener('DOMContentLoaded', startInterval);
  108.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement