【问题标题】:javascript - switch not workingjavascript - 开关不起作用
【发布时间】:2010-06-14 18:49:10
【问题描述】:
function FM_log(level, text) {
// caso não seja log total escolhe o que loga
var log = false;
switch (level) {
case "addtoprio()":log = true;
case "alternaTropas()":log = false;
case "sendtroops()":log = false;
defalt: log = false;
}
if ((logTotal == false) && (log == true))
GM_log(horaAtual() + " - "+level+", "+text);
else if (logTotal == true)
GM_log(horaAtual() + " - "+level+", "+text);
}
如何进行这种切换是一种工作方式?
【问题讨论】:
标签:
javascript
string
switch-statement
【解决方案1】:
break 声明您的开关,正确拼写“默认”应该可以帮助您:)
function FM_log(level, text)
{
// caso não seja log total escolhe o que loga
var log = false;
switch (level)
{
case "addtoprio()":
log = true;
break;
case "alternaTropas()":
log = false;
break;
case "sendtroops()":
log = false;
break;
default:
log = false;
break;
}
if ((logTotal == false) && (log == true))
GM_log(horaAtual() + " - "+level+", "+text);
else if (logTotal == true)
GM_log(horaAtual() + " - "+level+", "+text);
}
【解决方案2】:
两个问题:
- 您在每个
case 子句后缺少 break 关键字。
-
default 的拼写错误。
.
switch (level) {
case "addtoprio()":log = true; break;
case "alternaTropas()":log = false; break;
case "sendtroops()":log = false; break;
default: log = false; break;
}
More On Switch
【解决方案3】:
你必须在每个case之后添加break指令,并且使用default not defalt。
【解决方案4】:
改成这样:
function FM_log(level, text) {
// caso não seja log total escolhe o que loga
var log = false;
switch (level) {
case "addtoprio()":log = true; break;
case "alternaTropas()":log = false; break;
case "sendtroops()":log = false; break;
defalt: log = false; break;
}
if ((logTotal == false) && (log == true))
GM_log(horaAtual() + " - "+level+", "+text);
else if (logTotal == true)
GM_log(horaAtual() + " - "+level+", "+text);
}
【解决方案5】:
我遇到过类似的情况,添加 break 语句并不能解决问题。我最终通过确保将字符串类型传递给 switch 语句来纠正问题。您可以通过var newStr = level + ""; 在您的情况下执行此操作。 + "" 将确保它是字符串类型。然后将newStr 传递到您的 switch 语句中。