如何使用JavaScript获取希伯来日历日期并实现页面逻辑控制?
解决希伯来日历日期控制网页内容的问题
一、Switch语句失效的原因及修复
你通过Intl.DateTimeFormat获取的monthNumber是字符串类型(比如返回值是"1"),但你的switch分支里写的是数字1,类型不匹配导致无法命中分支。
有两种修复方式:
方式1:将字符串转为数字
修改获取月份的代码,把返回的字符串转成整数:var monthNumber = parseInt(new Intl.DateTimeFormat('en-u-ca-hebrew', { month: 'numeric' }).format(new Date()), 10);之后你的switch数字分支就能正常生效:
switch (monthNumber) { case 1: monthName = "Tishrei"; break; // 补充其他月份的分支... }方式2:分支使用字符串匹配
保持monthNumber为字符串类型,把switch分支的数字改成字符串形式:switch (monthNumber) { case "1": monthName = "Tishrei"; break; // 补充其他月份的分支... }
二、确认希伯来月份的英文拼写
要知道Intl.DateTimeFormat返回的月份英文拼写,直接打印测试即可。比如用month: 'long'参数获取完整名称:
// 获取希伯来月份的英文全称,控制台查看拼写 var monthName = new Intl.DateTimeFormat('en-u-ca-hebrew', { month: 'long' }).format(new Date()); console.log(monthName);
也可以用month: 'short'获取缩写形式,这样就能精准拿到API使用的拼写,避免拼写差异问题。
三、完整示例代码
结合需求的完整实现示例:
function toggleContentByHebrewMonth() { // 方式1:用月份数字匹配 const monthNumber = parseInt(new Intl.DateTimeFormat('en-u-ca-hebrew', { month: 'numeric' }).format(new Date()), 10); let targetClass = ''; switch (monthNumber) { case 1: targetClass = 'Tishrei'; break; case 2: targetClass = 'Cheshvan'; break; // 补充剩余月份的分支... default: targetClass = ''; } // 隐藏所有月份内容,显示目标月份 $('.hebrew-month-content').css('display', 'none'); targetClass && $(`.${targetClass}`).css('display', 'block'); // 方式2:直接用月份名称匹配(确认拼写后使用) /* const monthName = new Intl.DateTimeFormat('en-u-ca-hebrew', { month: 'long' }).format(new Date()); $('.hebrew-month-content').css('display', 'none'); $(`.${monthName}`).css('display', 'block'); */ } // 执行函数 toggleContentByHebrewMonth();
内容的提问来源于stack exchange,提问作者Shira Zacks
相关产品推荐
相关产品推荐

