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

网站按日期切换Logo问题求助:Logo不显示+样式切换需求

问题解决与代码修正

核心错误分析

你代码里的第一个致命问题是日期对象未正确实例化:原代码用date.getMonth(),但date不是一个有效的Date实例,必须通过new Date()创建日期对象才能调用getMonth()方法。这会导致脚本抛出ReferenceError,中断执行,最终Logo的src属性没被赋值,所以完全不显示。

另外第二个问题是样式未根据Logo类型动态调整,下面给出两种修正方案:


方案一:修改现有img元素(推荐)

直接复用页面上已有的img标签,动态修改src和样式:

<img class="logo" id="global_logo" src="">
<script>
function initLogo(){
    // 正确获取当前月份(0-11,加1转为1-12)
    const currentMonth = new Date().getMonth() + 1;
    const logoEl = document.getElementById("global_logo");

    if (currentMonth === 12) {
        // 12月显示圣诞Logo并设置样式
        logoEl.src = "xmas_mgmods-animated.gif";
        logoEl.style.height = "56%";
        logoEl.style.marginTop = "12px";
    } else {
        // 其他月份显示普通Logo,清除额外样式
        logoEl.src = "logo1.png";
        logoEl.style.height = "";
        logoEl.style.marginTop = "";
    }
}
initLogo();
</script>

方案二:动态生成img元素

如果需要完全替换Logo元素,可以用容器承载,直接生成对应HTML:

<!-- 用容器代替原来的空img -->
<div id="logo_container"></div>
<script>
function initLogo(){
    const currentMonth = new Date().getMonth() + 1;
    const container = document.getElementById("logo_container");
    let logoHtml;

    if (currentMonth === 12) {
        logoHtml = '<img class="logo" style="height:56%; margin-top:12px;" src="xmas_mgmods-animated.gif">';
    } else {
        logoHtml = '<img class="logo" src="logo1.png">';
    }

    container.innerHTML = logoHtml;
}
initLogo();
</script>

你第二次尝试代码的问题说明

  1. 未声明变量html就直接使用,会抛出ReferenceError;
  2. 逻辑颠倒:12月应该显示圣诞gif,代码里却赋值了logo1.png;
  3. GlobalIcon是空字符串,最终插入到innerHTML的内容为空,等于没生效;
  4. 直接在原有img标签的innerHTML里添加新img,会导致嵌套img元素,不符合DOM规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:05:12