You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JS循环更新<ul><li>?Django日历AJAX更新问题

用JavaScript实现Django模板式的嵌套循环更新日历

嘿,我明白你现在的需求——已经通过AJAX拿到了正确的日历数据,现在要把Django模板里的嵌套循环逻辑搬到JS里,动态更新页面上的日历对吧?这事儿不难,咱们一步步来:

首先,你已经在AJAX的done回调里拿到了response对象,里面的weeks就是咱们需要的二维数组。接下来咱们要做的就是:

  • 清空页面上现有的日历列表(避免旧内容残留)
  • 遍历weeks数组,逐个生成对应<ul class="days">元素
  • 遍历每个周的日期,生成对应的<li>,区分当月日期(非0)和非当月日期(0)
  • 把生成的HTML插入到页面的日历容器里

直接把这段逻辑加到你的AJAXdone函数里就行,修改后的代码如下:

.done(function(response) {
    console.log(response);
    // 保留你原来的月份年份更新逻辑
    nextMonth = response.next_month;
    nextYear = response.next_year;
    previousMonth = response.previous_month;
    previousYear = response.previous_year;
    currentMonth = response.current_month;
    currentYear = response.current_year;
    $('#currentMonth').text(currentMonth);
    $('#currentYear').text(currentYear);

    // 新增:处理日历日期的动态更新
    const weeks = response.weeks;
    // 假设所有<ul class="days">都在id为calendarContainer的父容器里,先清空旧内容
    const calendarContainer = $('#calendarContainer');
    calendarContainer.empty();

    // 遍历weeks数组,对应Django模板的外层循环
    weeks.forEach(function(week) {
        // 创建一个ul.days元素
        const daysList = $('<ul class="days"></ul>');
        // 遍历当前周的每一天,对应模板的内层循环
        week.forEach(function(day) {
            let dayItem;
            if (day === 0) {
                // 非当月日期,创建空li
                dayItem = $('<li></li>');
            } else {
                // 当月日期,创建带日期数字的li
                dayItem = $('<li></li>').text(day);
            }
            // 将日期项添加到当前周的列表中
            daysList.append(dayItem);
        });
        // 将当前周的列表添加到日历容器
        calendarContainer.append(daysList);
    });
});

几个实用小提醒:

  • 我这里假设日历的父容器是#calendarContainer,你需要根据自己页面的实际DOM结构调整这个选择器——如果原来的模板是直接把<ul class="days">放在某个元素下,就用那个元素的选择器即可。
  • 清空重建的方式比逐个替换旧的<ul>更简单,还能避免不同月份周数变化时的布局问题。
  • 如果需要给日期项加特殊样式或事件监听,直接在创建dayItem的时候添加就行,比如dayItem.addClass('active-day')或者dayItem.on('click', function() { ... })。

这样就能实现和你原来用Django模板渲染完全一致的效果啦!

内容的提问来源于stack exchange,提问作者user7179686

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:41:40