Javascript 开关未触发

Javascript switch not triggering

下拉菜单和 switch 语句的行为不一致。 select 调用一个将其索引写入 cookie 的例程,这似乎工作正常。

通过 select 更改索引并且忽略开关。我已经尝试过使用字符串大小写值和数字。 select 的索引值始终正确打印到控制台。我错过了什么?

 <label style="font-size:25px;" for="frq">Freq&nbsp;</label>
 <select style="font-size:25px;" width="20"  id="frq" onchange="changeFRQ()">
  <option value="600" selected>600</option> 
  <option value="650">650</option> 
  <option value="700">700</option>
  <option value="750">750</option>
  <option value="800">800</option>
  <option value="850">850</option>
</select>


function frequency(value) {

document.getElementById("frq").selectedIndex = frq;

console.log("frq:"+ frq);


switch(frq) {
  case "0":
    freq=600;
    console.log("600");
    break;
  case "1":
    freq=650;
    console.log("650");
    break;
  case "2":
    freq=700;
    console.log("700");
    break;
  case "3":
    freq=750;
    console.log("750");
    break;
  case "4":
    freq=800;
    console.log("800");
    break;
  case "5":
    freq=850;
    console.log("850");
    break;
  default:
    freq=600;
}

}


在您的 switch 语句中,您正在检查字符串大小写,因此您必须将 toString() 转换为您的 selectedIndex,请尝试以下语法:

function changeFRQ(value) {
  let frq = document.getElementById("frq").selectedIndex.toString();

  switch(frq) {
    case "0":
      freq=600;
      console.log("600");
      break;
    case "1":
      freq=650;
      console.log("650");
      break;
    case "2":
      freq=700;
      console.log("700");
      break;
    case "3":
      freq=750;
      console.log("750");
      break;
    case "4":
      freq=800;
      console.log("800");
      break;
    case "5":
      freq=850;
      console.log("850");
      break;
    default:
    }
  
  console.log("frq:"+ freq);
}
<label style="font-size:25px;" for="frq">Freq&nbsp;</label>
 <select style="font-size:25px;" width="20"  id="frq" onchange="changeFRQ()">
  <option value="600" selected>600</option> 
  <option value="650">650</option> 
  <option value="700">700</option>
  <option value="750">750</option>
  <option value="800">800</option>
  <option value="850">850</option>
</select>