webs/hanJing/js/ourProducts.js

98 lines
3.6 KiB
JavaScript
Raw Normal View History

document.addEventListener('DOMContentLoaded', function() {
// 获取URL参数中的产品ID
const urlParams = new URLSearchParams(window.location.search);
const productId = urlParams.get('product');
// 显示产品的函数
function showProduct(productId, shouldScroll = false) { // 默认不滚动
console.log('Showing product:', productId);
// 移除所有产品项的active类
const productItems = document.querySelectorAll('.product-item');
productItems.forEach(p => {
p.classList.remove('active');
});
// 找到对应的产品项并添加active类
const targetItem = document.querySelector(`[data-product="${productId}"]`);
if (targetItem) {
targetItem.classList.add('active');
// 确保产品所在的分类是展开的
const category = targetItem.closest('.category-content');
if (category) {
// 先移除所有分类的show类
document.querySelectorAll('.category-content').forEach(c => {
c.classList.remove('show');
});
document.querySelectorAll('.category-header').forEach(h => {
h.classList.remove('active');
});
// 展开当前分类
category.classList.add('show');
const categoryHeader = category.previousElementSibling;
if (categoryHeader) {
categoryHeader.classList.add('active');
}
}
// 隐藏所有详情内容
document.querySelectorAll('.detail-content').forEach(content => {
if (content) {
content.style.display = 'none';
}
});
// 显示目标产品详情
const targetContent = document.getElementById(productId);
if (targetContent) {
targetContent.style.display = 'block';
}
// 只在指定需要滚动时才滚动
if (shouldScroll) {
setTimeout(() => {
targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });
}, 100);
}
}
}
// 初始化根据URL参数决定行为
if (productId) {
// 如果有产品ID参数则显示对应产品并滚动
showProduct(productId, true); // 有参数时滚动
} else {
// 没有参数时,显示第一个产品但不滚动
const firstProduct = document.querySelector('.product-item');
if (firstProduct) {
showProduct(firstProduct.dataset.product, false); // 无参数时不滚动
}
}
// 产品项点击处理
const productItems = document.querySelectorAll('.product-item');
productItems.forEach(item => {
item.addEventListener('click', function() {
const productId = this.dataset.product;
// 点击产品项时需要滚动
showProduct(productId, true);
updateURL(productId);
});
});
// 更新URL函数
function updateURL(productId) {
const newURL = new URL(window.location.href);
newURL.searchParams.set('product', productId);
window.history.pushState({ productId }, '', newURL);
}
// 处理浏览器后退/前进
window.addEventListener('popstate', function(event) {
if (event.state && event.state.productId) {
showProduct(event.state.productId, true);
}
});
});