49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
// 频道标签过滤
|
||
document.querySelectorAll('.channel-tag').forEach(tag => {
|
||
tag.addEventListener('click', () => {
|
||
const channel = tag.dataset.channel;
|
||
document.querySelectorAll('.announcement').forEach(ann => {
|
||
ann.style.display = channel === 'all' || ann.dataset.channel === channel ? 'block' : 'none';
|
||
});
|
||
});
|
||
});
|
||
|
||
// 置顶悬浮动画
|
||
document.querySelectorAll('.pin-icon').forEach(pin => {
|
||
pin.addEventListener('click', () => {
|
||
const announcement = pin.closest('.announcement');
|
||
announcement.classList.toggle('pinned');
|
||
});
|
||
});
|
||
|
||
// ✨ 动态数据加载(M24 核心!)
|
||
fetch('data.json')
|
||
.then(response => response.json())
|
||
.then(data => {
|
||
const announcements = document.querySelector('.announcements-container');
|
||
announcements.innerHTML = '';
|
||
|
||
data.forEach(item => {
|
||
const announcement = document.createElement('div');
|
||
announcement.className = nnouncement ;
|
||
announcement.dataset.channel = item.channel;
|
||
announcement.innerHTML =
|
||
<div class="announcement-content">
|
||
<h3></h3>
|
||
<p></p>
|
||
</div>
|
||
<i class="pin-icon"></i>
|
||
;
|
||
announcements.appendChild(announcement);
|
||
});
|
||
|
||
// 重新绑定事件
|
||
document.querySelectorAll('.pin-icon').forEach(pin => {
|
||
pin.addEventListener('click', () => {
|
||
const announcement = pin.closest('.announcement');
|
||
announcement.classList.toggle('pinned');
|
||
pin.textContent = announcement.classList.contains('pinned') ? '⭐' : '✨';
|
||
});
|
||
});
|
||
});
|