1.重写汉晶网站
2.修改巨象云数网站“软件开发” 改为 “网站服务”
This commit is contained in:
98
hanJing/js/ourProducts.js
Normal file
98
hanJing/js/ourProducts.js
Normal file
@@ -0,0 +1,98 @@
|
||||
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);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user