当前位置:首页 > JavaScript

js实现新闻列表

2026-04-07 13:51:00JavaScript

实现新闻列表的步骤

使用HTML、CSS和JavaScript创建一个动态新闻列表,可以通过API获取数据或使用静态数据。

HTML结构

<div id="news-container">
  <h2>新闻列表</h2>
  <ul id="news-list"></ul>
</div>

CSS样式

js实现新闻列表

#news-container {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

#news-list {
  list-style: none;
  padding: 0;
}

.news-item {
  margin-bottom: 20px;
  padding: 15px;
  border: 1px solid #ddd;
  border-radius: 5px;
}

.news-item h3 {
  margin-top: 0;
}

.news-item p {
  margin-bottom: 0;
}

JavaScript实现

// 静态数据示例
const newsData = [
  {
    title: "新闻标题1",
    content: "新闻内容摘要1",
    date: "2023-05-01"
  },
  {
    title: "新闻标题2",
    content: "新闻内容摘要2",
    date: "2023-05-02"
  }
];

// 动态渲染新闻列表
function renderNewsList() {
  const newsList = document.getElementById('news-list');

  newsData.forEach(news => {
    const li = document.createElement('li');
    li.className = 'news-item';
    li.innerHTML = `
      <h3>${news.title}</h3>
      <p>${news.content}</p>
      <small>${news.date}</small>
    `;
    newsList.appendChild(li);
  });
}

// 页面加载完成后执行
window.addEventListener('DOMContentLoaded', renderNewsList);

从API获取数据

如果需要从后端API获取数据,可以使用fetch或axios:

js实现新闻列表

async function fetchNews() {
  try {
    const response = await fetch('https://api.example.com/news');
    const data = await response.json();
    return data;
  } catch (error) {
    console.error('获取新闻数据失败:', error);
    return [];
  }
}

async function renderNewsList() {
  const newsList = document.getElementById('news-list');
  const newsData = await fetchNews();

  newsData.forEach(news => {
    const li = document.createElement('li');
    li.className = 'news-item';
    li.innerHTML = `
      <h3>${news.title}</h3>
      <p>${news.content}</p>
      <small>${news.date}</small>
    `;
    newsList.appendChild(li);
  });
}

添加分页功能

对于大量新闻数据,可以添加分页功能:

let currentPage = 1;
const pageSize = 10;

async function fetchNews(page) {
  const response = await fetch(`https://api.example.com/news?page=${page}&size=${pageSize}`);
  return await response.json();
}

function renderPagination(totalPages) {
  const pagination = document.createElement('div');
  pagination.className = 'pagination';

  for (let i = 1; i <= totalPages; i++) {
    const pageBtn = document.createElement('button');
    pageBtn.textContent = i;
    pageBtn.addEventListener('click', async () => {
      currentPage = i;
      await renderNewsList();
    });
    pagination.appendChild(pageBtn);
  }

  document.getElementById('news-container').appendChild(pagination);
}

优化用户体验

添加加载状态和错误处理:

async function renderNewsList() {
  const newsList = document.getElementById('news-list');
  newsList.innerHTML = '<div class="loading">加载中...</div>';

  try {
    const newsData = await fetchNews(currentPage);
    newsList.innerHTML = '';

    if (newsData.length === 0) {
      newsList.innerHTML = '<div class="no-data">暂无新闻</div>';
      return;
    }

    newsData.forEach(news => {
      const li = document.createElement('li');
      li.className = 'news-item';
      li.innerHTML = `
        <h3>${news.title}</h3>
        <p>${news.content}</p>
        <small>${news.date}</small>
      `;
      newsList.appendChild(li);
    });

    renderPagination(Math.ceil(newsData.total / pageSize));
  } catch (error) {
    newsList.innerHTML = '<div class="error">加载新闻失败</div>';
  }
}

这个实现包含了静态数据渲染、API数据获取、分页功能和用户体验优化,可以根据实际需求进行调整和扩展。

标签: 列表新闻
分享给朋友:

相关文章

vue公共列表的实现

vue公共列表的实现

Vue 公共列表的实现方法 在 Vue 中实现公共列表组件,可以通过封装可复用的逻辑和模板来完成。以下是几种常见的实现方式: 使用 props 和 slots 通过 props 接收列表数据,使用…

vue实现悬浮列表

vue实现悬浮列表

Vue 实现悬浮列表的方法 使用 CSS 固定定位 通过 CSS 的 position: fixed 属性实现悬浮效果。在 Vue 模板中,为列表容器添加固定定位样式,并设置 top、left 等属…

vue实现功能列表

vue实现功能列表

Vue 实现功能列表的方法 在 Vue 中实现功能列表通常涉及数据绑定、列表渲染、事件处理和状态管理。以下是几种常见的方法: 数据驱动列表渲染 使用 v-for 指令可以轻松实现列表渲染。假设有一个…

vue实现传输列表

vue实现传输列表

Vue 实现传输列表 在 Vue 中实现传输列表功能,通常涉及两个列表之间的数据传递,用户可以通过按钮或拖拽操作将项目从一个列表移动到另一个列表。以下是实现传输列表的几种方法。 使用组件间数据传递…

vue实现新建列表

vue实现新建列表

Vue 实现新建列表的方法 在 Vue 中实现新建列表功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-for 动态渲染列表 通过数据驱动视图的方式,利用 v-for 指令动态渲染列表项…

vue实现树形列表

vue实现树形列表

Vue 实现树形列表的方法 递归组件实现 使用递归组件是最常见的方式,适合处理嵌套层级不确定的数据结构。 数据结构示例 data() { return { treeData: […