SWITCH javascript总是执行默认情况的麻烦

Gus*_*avo 2 javascript switch-statement

好吧,我有这个麻烦,我一直在处理,但我不能让它工作

我有这个功能

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;
}
Run Code Online (Sandbox Code Playgroud)

很简单吧?现在我将此间隔设置为5000毫秒来调用getDirections(变量),该函数在第一次调用时工作良好但在此之后,它总是输入default子句并且它还会警告'输入默认值但方向= dirvalue',我的意思是即使dir是一个介于0-7之间的值,它总是会进入默认值:但是它会提醒值,所以它被用来输入其中一个案例.

我使用其他如果和它工作所以相同,所以我不知道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';}
Run Code Online (Sandbox Code Playgroud)

Alf*_*TeK 8

这很奇怪...尝试确保dir是一个int,在切换之前执行此操作:

dir = parseInt(dir);
Run Code Online (Sandbox Code Playgroud)

如果警报正确显示值,则它应该进入交换机,但它仍然可以"看起来"正确但是具有不同的数据类型.手动进行转换以确保它是一个int