The slider components have an endless loop feature that only runs once before coming to a

I'm working on creating an infinite slider that loops continuously without the need for navigation buttons. Instead, I plan to allow users to control the slider using touch gestures (although this functionality is not yet implemented in the code snippet).

However, I've encountered a problem with the logic of the infinite slider. It seems to start at the last slide (numbered 5 in my case), then goes to slides 2, 3, 4, 5, and finally 1 before stopping. Additionally, I can't figure out why it's disregarding the condition checking the value of currentSlide.

const allSlides = document.querySelectorAll(".testimonials-tp__review-slider__slide");
const numOfSlides = allSlides.length ;

let currentSlide = 0;

const slider = () => {

    // Setting each slide's initial position:
    // setToInitialPosition();

     // Moving to the next slide after 2s:
    setInterval(sliding, 2000);
}

const sliding = () => {
    // Reset to the first slide for an infinite loop:
    if(currentSlide === 0 || currentSlide === numOfSlides) setToInitialPosition();
    
    // Making the current slide outside the container:
    allSlides[currentSlide].style.transform = `translateX(${(currentSlide) * -100}%)`; 
    
     // Bring the next slide to the container:
     allSlides[currentSlide + 1].style.transform = `translateX(0%)`;
     ++currentSlide;
}

const setToInitialPosition = () => {
    allSlides.forEach((slide, index) => {
        // Reset all slides to their initial positions:
        slide.style.transform = `translateX(${index * 100}%)`;
    });

    // Reset the current slide index:
    currentSlide = 0;
};

slider();

You can access the complete code here: https://codepen.io/Marya-ai/pen/ZEwRNRE

Your help and suggestions would be greatly appreciated.

Answer №1

Upon inspection of the console, you may notice an error stating "cannot read properties of undefined." To resolve this issue, ensure that your code includes the following:

if(currentSlide === 0 || currentSlide === numOfSlides-1) setToInitialPosition();

This adjustment will help prevent any issues related to the length of the array.

If you further examine the data through a console log of the currentSlide variable, you may observe inconsistencies between the numbers represented and the actual data. It is recommended to align your code with reliable data to avoid confusion.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

How should h tags be correctly utilized?

Is it better to use h tags or lists to style content? Take a look at this code, is using h tags the appropriate choice here or should I consider using a list instead? <div class="col-xm-12 col-sm-6 col-md-4"> <h4>Get in touch< ...

Design a table within an mdDialog that allows for editing of data presented in JSON format

I'm attempting to implement a dialog using JSON data. $scope.showAttributeData = function(data) { $scope.feature = data console.log($scope.feature) var that = this; var useFullScreen = ($mdMedia('sm') ...

What causes jQuery's append function to trigger a redraw of my Div?

I have a unique function that incrementally increases the date by one day every second. Once the date matches specific dates, I aim to update my #newsDiv with extra text content. The #newsDiv will display all historical "news" and will be set to scroll to ...

Undefined value is encountered when passing props through the Context API in a REACT application

Exploring My Context API Provider File (Exp file) import react form 'react'; import {createContext} from "react"; export const ContextforFile = createContext(); export function ContextData(props){ let rdata=props.data return( &l ...

Changing the color of a pseudo element in Material-UI

I'm having trouble changing the border color of the ::after pseudo element on a standard text field from MUI. I've been unable to figure it out. <TextField id="standard-basic" label="Email" variant="standard"/> ...

Sequenced thunk execution during rendering

My application automatically retrieves user information upon rendering. When the app is first launched, it uses the getUserInformation() function to fetch this data. Users do not need to log in manually as the app operates within the company's interna ...

Creating if-else conditions in React can be achieved by utilizing the ternary

How can I make an if-else condition dynamic based on a button click? I have tried implementing it but it doesn't seem to work. I attempted to create conditions for different languages. For example, clicking the button labeled "Español" should print ...

Stopping React from re-rendering a component when only a specific part of the state changes

Is there a way to prevent unnecessary re-renders in React when only part of the state changes? The issue I'm facing is that whenever I hover over a marker, a popup opens or closes, causing all markers to re-render even though 'myState' rema ...

JavaScript Ping Pong Challenge

I'm currently investigating why the browser returns NaN for the Positions. The game is being rendered in a loop and updated as soon as the monitor is ready, which is defined in the update() function and runs infinitely. The reset() function is a part ...

Attempting to create a dynamic layout for the objects using media queries and flexbox, however, the results are not as expected

.container { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; flex-direction: column; } .item { margin: 10px; border: 1px solid lightgray; border-radius: 10px; overflow: hidden; width: 100%; } @media scree ...

Exploring the power of "this" in Vue.js 2.0

Seeking help with a VueJS issue. I am trying to create a voice search button that records my voice and prints it out in an input form. <input type="text" name="inputSearch" id="inputSearch" v-model="inputSearch" class="form-control" x-webkit-speech> ...

What could be the reason for encountering the 'SyntaxError: Cannot use import statement outside a module' when trying to utilize the cloudinary module?

I am facing an issue while trying to utilize the Cloudinary module for resizing an image. Below is the code snippet I have: import cloudinary from 'cloudinary'; var cl = new cloudinary.Cloudinary({ cloud_name: "username", secure: true } ...

When using Next.js getServerSideProps(), cookies are not accessible on the initial render after a redirect, but they become available upon refreshing the page

Within my Next.js application, I am serving cookies from the server-side API like this: res.setHeader('Set-Cookie', AJWT) res.redirect(302, '/') Now, in my index.js file, I am attempting to retrieve the cookie before the page is render ...

Achieving a Photo Grid Layout with CSS

Looking for help with my CSS photogrid - it's close to what I want, but not quite there. Here's the layout I'm aiming for: 1 | 2 | 3 4 | 5 | 6 But currently, it displays like this: 1 | 3 | 5 2 | 4 | 6 I've tried tweaking the CSS but ...

Having trouble with Jquery and closures or function references?

It seems like the issue is related to a function running in a different scope where the jQuery library is not accessible. This can be seen when the function is called as the last parameter on the second line below. var funcExpandHeight = container.animate ...

How can I retrieve x-data from an external file using Alpine.js?

I recently started exploring Alpine.js and grasped the fundamentals, but I'm facing challenges when trying to move functions outside of inline script tags. Consider this snippet from index.html: <div x-data="{ loading: false }"/> &l ...

Tips for connecting Vue data to a dropdown menu

While diving into Vue.js, I'm encountering a puzzling issue. Despite receiving data from the server (5 records), it's not populating the <select> element properly. Instead of multiple options, all I see is a single one displaying {{dept.DNa ...

What is the best way to target CSS only to elements that do not have a parent with a specific class?

Striving to preserve the existing CSS in the codebase. .my-new-class { .existing-class { ...implementing new styles } } .existing-class { ...maintaining old styles } I attempted a technique that I know won't work and understand why: ...

Is the provided code snippet considered a function-statement, function-expression, and function-expression-statement?

Currently, I am examining some code snippets from the EcmaScript.NET project. Specifically, I am delving into the definitions within FunctionNode.cs file. The comment above the definitions provides a detailed explanation of the three types of functions tha ...

Express application receiving repetitive post requests

Recently, I have been working on developing a YouTube video conversion app that utilizes youtube-dl for streaming videos from YouTube and saving them. Everything was going smoothly until I encountered an issue when trying to stream a video that exceeded on ...