Я пытаюсь использовать цикл для вывода значений из двух массивов в функции зависания 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>');
}
);
}
});
Вам действительно следует кэшировать const $wheelContent = $('.wheel-content') и повторно использовать $wheelContent. Это значительно оптимизирует выполнение вашего кода.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы избежать undefined, вам необходимо убедиться, что переменная увеличения цикла x имеет правильную область видимости.
Используйте let:
for (let x = 0; x < segmentTitle.length; x++)
Это исправлено! Спасибо, Рунин. Я совершенно упустил из виду, что не инициализировал переменную.
Я боролся с добавлением моего html, правила форматирования в SO странные. Надеюсь, это изображение подойдет, спасибо, что рассмотрели мой вопрос.