出租視作

by wllai2001

HTML

<div>OOO小劇場出租狀況表</div>
<div class="calendar">
    <div class="header">
        <button onclick="prevMonth()">Previous Month</button>
        <h2 id="month-year">February 2024</h2>
        <button onclick="nextMonth()">Next Month</button>
    </div>

    <div class="days">
        <div class="weekday">一</div>
        <div class="weekday">二</div>
        <div class="weekday">三</div>
        <div class="weekday">四</div>
        <div class="weekday">五</div>
        <div class="weekday">六</div>
        <div class="weekday">日</div>
    </div>

    <div class="days" id="calendar-days">
        <!-- Days will be dynamically populated here -->
    </div>
</div>

CSS

body {
            font-family: Arial, sans-serif;
        }

        .calendar {
            max-width: 900px;
            margin: auto;
            text-align: center;
        }

        .header {
            display: flex;
            justify-content: space-between;
            margin-bottom: 10px;
        }

        .days {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 5px;
        }

        .weekday {
            font-weight: bold;
            text-align: center;
        }

        .day {
            border: 1px solid #ccc;
            padding: 10px;
            text-align: center;
        }

        .room-status {
            display: flex;
            flex-direction: column;
            align-items: center;
            margin-top: 5px;
        }

        .room {
            width: 100px;
            line-height: 30px;
            /*border-radius: 50%;*/
            margin-top: 5px;
        }

        .rented {
            background-color: #ffa07a; /* Light Salmon */
        }

        .available {
            background-color: #90ee90; /* Light Green */
        }

JavaScript

// 函數用於更新日曆,顯示當前月份
function updateCalendar(year, month) {
    const calendarDays = document.getElementById('calendar-days');
    const monthYearHeader = document.getElementById('month-year');

    // 清空先前的內容
    calendarDays.innerHTML = "";

    // 在標頭中設置月份和年份
    monthYearHeader.innerText = new Date(year, month - 1).toLocaleString('default', { month: 'long', year: 'numeric' });

    // 獲取月份的第一天以確定一周的起始日
    const firstDayOfMonth = new Date(year, month - 1, 1);
    const startingDayOfWeek = firstDayOfMonth.getDay(); // 0(星期日)到 6(星期六)

    // 獲取月份的天數
    const daysInMonth = new Date(year, month, 0).getDate();

    // 動態創建日期元素,考慮一周的起始日
    for (let day = 1; day <= daysInMonth + startingDayOfWeek; day++) {
        const dayElement = document.createElement('div');
        dayElement.classList.add('day');

        // 檢查A、B、C是否在這一天被租用(可以替換此邏輯)
        const isRentedA = Math.random() < 0.3; // 示例邏輯,根據需要修改
        const isRentedB = Math.random() < 0.4;
        const isRentedC = Math.random() < 0.2;

        if (isRentedA || isRentedB || isRentedC) {
            dayElement.classList.add('已出租');
        } else {
            dayElement.classList.add('未出租');
        }

        // 顯示日期
        if (day > startingDayOfWeek) {
            dayElement.innerText = day - startingDayOfWeek;

            // 為每一天添加房間狀態
            const roomStatusDiv = document.createElement('div');
            roomStatusDiv.classList.add('room-status');

            // 房間A
            const roomA = document.createElement('div');
            roomA.classList.add('room', isRentedA ? 'rented' : 'available');
            roomA.innerText = isRentedA ? 'A - 已出租' : 'A - 未出租';
            roomStatusDiv.appendChild(roomA);

            // 房間B
            const roomB = document.createElement('div');
            roomB.classList.add('room', isRentedB ? 'rented' : 'available');
            roomB.innerText = isRentedB ? 'B - 已出租' : 'B - 未出租';
            roomStatusDiv.appendChild(roomB);

            // 房間C
        ...