当前位置:首页 > 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实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js手势实现

js手势实现

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