月別の写真をランダムに表示

月別の写真をランダムに表示するためのコード。
データはjson形式で作成し、現在月のデータの中からランダムに1件を選択し表示するものです。

 

【test.html】
<div id=”monthly-content”><!– ここにデータが表示されます –></div>
<script>
    // 現在の月を取得
    const currentMonth = (‘0’ + (new Date().getMonth() + 1)).slice(-2);
    // JSONファイルからデータを読み込む
    var datafile = ‘/data/data.json’;
    fetch(datafile)
        .then(response => response.json())
        .then(data => {
            // 現在の月のデータをフィルタリング
            const filteredData = data.filter(item => item.mon === currentMonth);
            // ランダムにデータを選択
            if (filteredData.length > 0) {
                const randomItem = filteredData[Math.floor(Math.random() * filteredData.length)];
                const title = randomItem.title;
                const name = randomItem.name;
        // HTML要素にデータを挿入
        document.getElementById(‘monthly-content’).innerHTML = `
            </p>
<p><a href=”${randomItem.link}”>${title}</a></p>
<p>
            <a href=”${randomItem.link}”><img src=”${randomItem.filename}” alt=”${title}”></a>
            </p>
<p style=”text-align:center;”>${name}</p>
<p>
        `;
            } else {
                document.getElementById(‘monthly-content’).innerHTML = ‘</p>
<p>No data available for this month.</p>
<p>’;
            }
        })
        .catch(error => {
            console.error(‘Error loading data:’, error);
            document.getElementById(‘monthly-content’).innerHTML = ‘</p>
<p>Error loading data.</p>
<p>’;
        });
</script>

 

 

【 data.json 】

[
{
“mon”: “01”,
“name”: “Aさん”,
“title”: “題目A”,
“filename”: “a.jpg”,
“link”: “/images/”
},
{
“mon”: “01”,
“name”: “Bさん”,
“title”: “題目B”,
“filename”: “b.jpg”,
“link”: “/images/”
},

{
“mon”: “12”,
“name”: “Zさん”,
“title”: “題目Z”,
“filename”: “z.jpg”,
“link”: “/images/”
}
]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA