没有错误,但结果是 Undefined.javascript

No error, but the result is Undefined.javascript

代码中没有错误,但输出未定义

代码

var xx = document.getElementById("stars").value;
var day;

switch (xx) {
  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";
}

document.getElementById("demo").innerHTML = "Today is " + day;
<p id="demo"></p>
<input type='hidden' id="stars" value='4'>

我尝试了很多方法,但没有得到任何解决方案,请帮助我提前感谢

value returns 一个字符串,case 表达式中的值是数字。一种解决方案是在那里也使用字符串文字:

var xx = document.getElementById("stars").value;
var day;

switch (xx) {
  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";
}

document.getElementById("demo").innerHTML = "Today is " + day;
<p id="demo"></p>
<input type='hidden' id="stars" value='4'>

Switch 语句使用 strict equality comparison (===) 将其表达式与每个 case 子句进行比较。

.value 属性 returns 一个字符串。因此 xx 的值是一个字符串,不匹配任何 case 子句,因为每个 case 子句中的值都是一个数字,并且两种不同类型的值之间的严格相等比较总是计算为错误的。因此,day 永远不会使用初始值 undefined

以外的值进行初始化

将每个 case 子句更改为数字即可解决问题

case "4":
    day = "Thursday";
    break;