当前位置:首页 > JavaScript

js实现商品展示页

2026-04-04 17:10:23JavaScript

实现商品展示页的 JavaScript 核心功能

基础 HTML 结构

<div id="product-container" class="product-grid"></div>

CSS 基础样式

.product-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 20px;
  padding: 20px;
}

.product-card {
  border: 1px solid #ddd;
  border-radius: 8px;
  overflow: hidden;
  transition: transform 0.3s;
}

.product-card:hover {
  transform: translateY(-5px);
}

.product-image {
  width: 100%;
  height: 200px;
  object-fit: cover;
}

.product-info {
  padding: 15px;
}

数据获取与渲染

// 模拟商品数据
const products = [
  {
    id: 1,
    name: '无线蓝牙耳机',
    price: 299,
    image: 'https://example.com/headphones.jpg',
    description: '高保真音质,30小时续航'
  },
  // 更多商品数据...
];

function renderProducts() {
  const container = document.getElementById('product-container');

  products.forEach(product => {
    const productCard = document.createElement('div');
    productCard.className = 'product-card';
    productCard.innerHTML = `
      <img src="${product.image}" alt="${product.name}" class="product-image">
      <div class="product-info">
        <h3>${product.name}</h3>
        <p>${product.description}</p>
        <p class="price">¥${product.price}</p>
        <button class="add-to-cart" data-id="${product.id}">加入购物车</button>
      </div>
    `;
    container.appendChild(productCard);
  });
}

// 页面加载时渲染商品
document.addEventListener('DOMContentLoaded', renderProducts);

购物车功能实现

js实现商品展示页

const cart = [];

function addToCart(productId) {
  const product = products.find(p => p.id === productId);
  if (product) {
    cart.push(product);
    updateCartCount();
  }
}

function updateCartCount() {
  const cartCount = document.getElementById('cart-count');
  if (cartCount) {
    cartCount.textContent = cart.length;
  }
}

// 事件委托处理加入购物车按钮
document.getElementById('product-container').addEventListener('click', (e) => {
  if (e.target.classList.contains('add-to-cart')) {
    const productId = parseInt(e.target.getAttribute('data-id'));
    addToCart(productId);
  }
});

筛选与排序功能

function sortProducts(criteria) {
  switch(criteria) {
    case 'price-asc':
      products.sort((a, b) => a.price - b.price);
      break;
    case 'price-desc':
      products.sort((a, b) => b.price - a.price);
      break;
    case 'name':
      products.sort((a, b) => a.name.localeCompare(b.name));
      break;
  }
  refreshProductDisplay();
}

function filterProducts(category) {
  // 实际项目中这里应该是API请求或过滤现有数据
  refreshProductDisplay();
}

function refreshProductDisplay() {
  const container = document.getElementById('product-container');
  container.innerHTML = '';
  renderProducts();
}

实际项目增强建议

js实现商品展示页

  1. 使用Fetch API或Axios从后端获取真实商品数据

    async function fetchProducts() {
    try {
     const response = await fetch('/api/products');
     const data = await response.json();
     products = data;
     renderProducts();
    } catch (error) {
     console.error('获取商品失败:', error);
    }
    }
  2. 实现分页加载

    
    let currentPage = 1;
    const productsPerPage = 12;

function loadMoreProducts() { currentPage++; fetch(/api/products?page=${currentPage}) .then(response => response.json()) .then(newProducts => { products.push(...newProducts); renderProducts(); }); }


3. 添加商品详情模态框
```javascript
function showProductDetails(productId) {
  const product = products.find(p => p.id === productId);
  if (product) {
    // 创建并显示模态框
    const modal = document.createElement('div');
    modal.className = 'product-modal';
    modal.innerHTML = `
      <div class="modal-content">
        <span class="close">&times;</span>
        <img src="${product.image}" alt="${product.name}">
        <h2>${product.name}</h2>
        <p class="price">¥${product.price}</p>
        <p>${product.description}</p>
        <button class="add-to-cart" data-id="${product.id}">加入购物车</button>
      </div>
    `;
    document.body.appendChild(modal);

    modal.querySelector('.close').addEventListener('click', () => {
      modal.remove();
    });
  }
}
  1. 响应式设计增强
    @media (max-width: 768px) {
    .product-grid {
     grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    }
    }

标签: 商品js
分享给朋友:

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…