Вывод значений массива javascript в цикле for приводит к undefined

Я пытаюсь использовать цикл для вывода значений из двух массивов в функции зависания jQuery. Вне наведения я могу нормально получить доступ к этим значениям массива, но внутри я получаю undefined.

JavaScript для меня все еще в новинку, поэтому, пожалуйста, объясните мне любые мои ошибки новичка. Спасибо.

jQuery(document).ready(function($){
var originalWheelContent = $('.wheel-content').html(),
    transitionSpeed = 400,
    segmentTitle = ['collaborative','compassionate','inclusive','empowering','responsive'],
    segmentParagraph = [
        'Working together to deliver the best possible outcomes and recognises and values the contribution of others.',
        'Constantly looking for new ways to satisfy the needs of those you work with or care for. Acting with consideration and understanding for others feelings.',
        'Actively seeking and creating opportunities to include others, fostering an environment where everyone feels valued and respected.',
        'Enabling positive change and supporting others to reach their maximum potential.',
        'Reacting positively to change and others needs by being creative and innovative in finding solutions.'
    ];

for(x = 0; x < segmentTitle.length; x++){
    $('.wheel-graphic map area#' + segmentTitle[x]).hover(
        function(){
            $('.wheel-content').fadeOut(transitionSpeed,function(){
                $('.wheel-content').replaceWith('<div class = "wheel-content"><h2 class = "segment-title">' + segmentTitle[x] + '</h2><h4 class = "segment-p">' + segmentParagraph[x] + '</h4></div>');
            });
        }, function() {
            $('.wheel-content').fadeIn(transitionSpeed);
            $('.wheel-content').replaceWith('<div class = "wheel-content">' + originalWheelContent + '</div>');
        }
    );
   }
});

Вывод значений массива javascript в цикле for приводит к undefined

Я боролся с добавлением моего html, правила форматирования в SO странные. Надеюсь, это изображение подойдет, спасибо, что рассмотрели мой вопрос.

Paul Bamforth 15.05.2018 11:54

Вам действительно следует кэшировать const $wheelContent = $('.wheel-content') и повторно использовать $wheelContent. Это значительно оптимизирует выполнение вашего кода.

Jeremy Thille 15.05.2018 11:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы избежать undefined, вам необходимо убедиться, что переменная увеличения цикла x имеет правильную область видимости.

Используйте let:

for (let x = 0; x < segmentTitle.length; x++)

Это исправлено! Спасибо, Рунин. Я совершенно упустил из виду, что не инициализировал переменную.

Paul Bamforth 15.05.2018 11:57

Другие вопросы по теме