عندى مشكلة فى java script فى الصفحة المقصودة المفروض class active يضاف عند scroll فحين ان الداتا الخاصة بالرابط مساوية للقسم
ولكن بينتج 3 active للرابط بعد اذنكم المراجعة
عندى مشكلة فى java script فى الصفحة المقصودة المفروض class active يضاف عند scroll فحين ان الداتا الخاصة بالرابط مساوية للقسم
ولكن بينتج 3 active للرابط بعد اذنكم المراجعة
أهلا عبد الله
لديك Observer يقوم باكتشاف الـ section المعروض على الشاشة ويُفعل الـ active
لعنصر القائمة العلوية المقابل له، وهيك لما بيكون عندك 3 sections
معروضين عالشاشة مثلا، بيكون عندك 3 عناصر بالقائمة العلوية عندهم active
لحل المشكلة لازم تحذف الـ active
عن كل العناصر بالقائمة العلوية قبل ما تضيفه للعنصر المقابل لآخر section انعرض عالشاشة
const resetActiveLinks = () => {
const activeLinks = document.querySelectorAll('.menu__item.active')
activeLinks.forEach(link => link.classList.remove('active'))
}
هذا function يقوم بحذف active
من كل عناصر القائمة العلوية الـ active
، سنقوم باستدعائه ضمن الـ callback
if (item && item.isIntersecting) {
resetActiveLinks();
navListElement.classList.add('active');
section.classList.add('active');
}
التعقيد في التعامل مع إضافة الكلاس سبب لك المشكلة التي إقترح لك لؤي حلها.
لذا إسمح لي إعيد ترتيب كودك كالتالي:
const callback = items => {
items.forEach(item => {
const navListElement = document.querySelector(`.menu__item[data-link="${item.target.id}"]`);
if (item.isIntersecting) {
navListElement.classList.add('active');
} else {
navListElement.classList.remove('active');
}
})
}
وراح تضيف options
للـ observer
كالتالي:
const options = {
threshold: 0.7
};
// asynchronously
const observer = new IntersectionObserver(callback,options)
بحيث ما يتم عمل observer الا وقد ظهر 70% من من القسم التالي
مافهمت هذه الجمله
بمعني مطلبش الاذن من الطالب انت تملى على الطالب ما تريده انت
ها ولو احنا هنا نتعلم من بعض
ولو منتعداش برضو