如何基于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
相关产品推荐
相关产品推荐

