
页面在 localhost 上空白,是因为 getDay() 调用失败(方法名大小写错误)且 document.write() 错误嵌套在 switch 内部,导致语法异常中断脚本执行。
页面在 localhost 上空白,是因为 `getday()` 调用失败(方法名大小写错误)且 `document.write()` 错误嵌套在 `switch` 内部,导致语法异常中断脚本执行。
在 JavaScript 中,Date 对象的方法名严格区分大小写。问题代码中使用了 d.getday() —— 这是一个不存在的方法,浏览器会抛出 TypeError: d.getday is not a function,导致后续脚本(包括 document.write)完全不执行,最终页面呈现为空白。
此外,原代码还存在两个关键问题:
- 缺少变量声明关键字(如
const、let或var),在严格模式或现代环境下将引发ReferenceError; -
document.write("<b> today is: ", day)</b>被错误地写在switch语句块内部,且缺少右大括号},造成语法结构断裂(switch未正常闭合),进一步加剧执行失败。
以下是修正后的完整、可运行代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>今日星期显示</title>
</head>
<body>
<script>
const d = new Date();
let day;
// ✅ 正确方法名:getDay()(首字母大写)
switch (d.getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
default:
day = "Unknown";
break;
}
// ✅ document.write 移至 switch 外部,确保执行时机正确
document.write(`<b>Today is: ${day}</b>`);
</script>
</body>
</html>⚠️ 重要注意事项:
立即学习“Java免费学习笔记(深入)”;
-
getDay()返回的是数字(0 表示周日,1 表示周一……6 表示周六),切勿与getDate()(返回当月日期,如 1–31)混淆; -
document.write()仅适用于页面加载过程中调用;若在 DOM 加载完成后执行(例如事件回调中),它会清空整个文档,因此生产环境更推荐使用element.textContent或innerHTML动态更新指定元素; - 始终使用
let/const显式声明变量,避免隐式全局变量带来的维护风险; - 添加
default分支是良好实践,增强代码健壮性。
✅ 推荐进阶写法(更现代、安全):
const d = new Date();
const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
const day = weekdays[d.getDay()];
document.querySelector('body').insertAdjacentHTML('beforeend', `<p><strong>Today is: ${day}</strong></p>`);通过修正大小写、变量声明和代码结构,即可让星期名称稳定、可靠地显示在页面上。


















