【发布时间】:2012-09-05 05:49:39
【问题描述】:
我遇到了这个麻烦,我一直在处理,但我就是无法让它工作
我有这个功能
function getDirections(dir)
{
var img;
switch(dir)
{
case 0:
img+='N.png';
break;
case 1:
img+='NE.png';
break;
case 2:
img+='E.png';
break;
case 3:
img+='SE.png';
break;
case 4:
img+='S.png';
break;
case 5:
img+='SO.png';
break;
case 6:
img+='O.png';
break;
case 7:
img+='NO.png';
break;
default:
alert('enetered default but direction='+dir);
}
return img;
}
很简单吧?现在我将此间隔设置为 5000 毫秒来调用 getDirections(variable),该函数在第一次调用时运行良好,但之后,它总是进入默认子句,它还会提醒“输入默认值但方向 = dirvalue”,我的意思是,即使 dir 是一个介于 0-7 之间的值,它也将始终输入默认值:但它会提醒该值,因此应该输入其中一种情况。
我用 else if 做了同样的事情,它工作了,所以我不知道 SWITCH 有什么问题
if(dir==0){img+='N.png';}
else if(dir==1){img+='NE.png';}
else if(dir==2){img+='E.png';}
else if(dir==3){img+='SE.png';}
else if(dir==4){img+='S.png';}
else if(dir==5){img+='SO.png';}
else if(dir==6){img+='O.png';}
else if(dir==7){img+='NO.png';}
【问题讨论】:
-
如果你在函数顶部记录
dir,你会得到预期的结果吗? -
该代码在 Firefox 中对我来说运行良好,是否涉及其他代码?你使用的是什么浏览器?您可能还想添加
var img="";,因为它会在追加时尝试将两个操作数都转换为字符串,并且由于您尚未初始化 img 它只是变为“未定义”。 :) -
switch...caseuses strict comparison;您正在将字符串与整数进行比较。
标签: javascript switch-statement