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

如何基于JavaScript条件修改标题颜色?日期类型匹配问题求助

问题分析与解决方案

嘿,我来帮你搞定这个问题!你已经精准定位了核心矛盾——类型不匹配,不过还有个toString()的用法错误在拖后腿,咱们一步步理顺:

关键错误点解析

  • toString()调用方式错误:你写的var d2 = toString(20190508)其实是调用了全局的toString()方法,这个方法默认会把上下文指向window对象,所以返回的结果是"[object Window]",这就是弹窗和标题里显示奇怪内容的原因。正确的做法是让数字本身调用toString(),也就是20190508.toString()。
  • 类型不匹配的比较隐患:d1是字符串类型(比如"20240520"),如果d2是数字类型(20190508),虽然JavaScript的!=会自动做类型转换,但统一成相同类型会让逻辑更可靠,避免意外bug。

修正后的完整代码

JavaScript部分

var now = new Date();
var y = now.getFullYear().toString();
var m = (now.getMonth() + 1).toString();
var d = now.getDate().toString();
(d.length == 1) && (d = '0' + d);
(m.length == 1) && (m = '0' + m);
var d1 = y + m + d;
// 修正:让数字直接调用toString(),转换为字符串类型
var d2 = 20190508.toString(); 

// 建议用严格不等于!==,避免自动类型转换的隐藏问题
if (d1 !== d2) { 
 alert("ACHTUNG: Die FME Server Log Workbench wurde heute (" + d1 + ") NICHT ausgeführt! \n\nLetzte Ausführung: " + d2);
 var Titel = "Letzte Ausführung: " + d2.fontcolor("red");
 document.getElementById("demo").innerHTML = Titel;
} else {
 var Titel = "Letzte Ausführung: " + d1.fontcolor("green");
 document.getElementById("demo").innerHTML = Titel;
}

HTML部分

<h1 id="demo"></h1>

额外优化建议(可选)

可以用ES6的模板字符串和padStart方法简化日期拼接的逻辑,让代码更简洁易读:

var now = new Date();
var y = now.getFullYear();
// 自动补零到两位,不用手动判断长度
var m = String(now.getMonth() + 1).padStart(2, '0');
var d = String(now.getDate()).padStart(2, '0');
// 模板字符串拼接更直观
var d1 = `${y}${m}${d}`;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:32:24