Playlist
ผมได้ปรับปรุงโค้ดเพื่อรองรับข้อมูลจาก attribute ใหม่ๆ และเพิ่มความยืดหยุ่นในการจัดการเพลย์ลิสต์ต่างๆ ดังนี้:
- เพิ่มฟังก์ชัน
parsePlaylistData
เพื่อแยกวิเคราะห์ข้อมูลจาก dataset ต่างๆ:javascriptfunction parsePlaylistData(data) {
return data.split(',').map(item => {
const parts = item.split('|');
return {
platform: parts[0],
videoId: parts[1],
episode: parts[2],
title: parts[3],
series: parts[4] || '',
duration: parts[5] || '',
fullTitle: parts[6] || parts[3],
type: parts[7] || '',
tags: (parts[8] || '').split(';'),
views: parts[9] || '0',
likes: parts[10] || '0',
order: parts[11] || '0'
};
});
} - สร้างออบเจ็กต์
playlists
เพื่อเก็บข้อมูลเพลย์ลิสต์ทั้งหมด:javascriptconst playlists = {
new: parsePlaylistData(playlistArticle.dataset.playlistNew),
recommended: parsePlaylistData(playlistArticle.dataset.playlistRecommended),
popular: parsePlaylistData(playlistArticle.dataset.playlistPopular)
}; - เพิ่ม dropdown เพื่อเลือกเพลย์ลิสต์:
html
<select id="playlist-selector" class="p-2 border rounded">
<option value="new">New</option>
<option value="recommended">Recommended</option>
<option value="popular">Popular</option>
</select> - ปรับปรุงฟังก์ชัน
createPlaylistItems
เพื่อแสดงข้อมูลเพิ่มเติมของวิดีโอ:javascriptfunction createPlaylistItems() {
playlistItemsContainer.innerHTML = '';
playlists[currentPlaylist].forEach((video, index) => {
// ... (โค้ดสร้าง playlist item)
});
updateRemainingVideos();
} - เพิ่ม event listener สำหรับการเปลี่ยนเพลย์ลิสต์:
javascript
playlistSelector.addEventListener('change', (e) => {
currentPlaylist = e.target.value;
currentVideoIndex = 0;
createPlaylistItems();
playVideo(0);
}); - ปรับปรุงฟังก์ชัน
playVideo
เพื่อใช้ข้อมูลจากเพลย์