日期:2014-05-16  浏览次数:20385 次

JS里的switch怎么写?
// switch(temp.message.List[i].State)
  /// {
  // case 0:
  // orderstate="未付款";
  // break;
  // case 1:
  // orderstate="未发货";
  // break;
  // case 2:
  //// orderstate="未收货";
  // break;
  // case 3:
  // orderstate="已收货";
  // break;
  // 
  // }


 if(temp.message.List[i].State==0)
  orderstate="未付款";
  else if(temp.message.List[i].State==1)
  orderstate="未发货";
  else if(temp.message.List[i].State==2)
  orderstate="未收货";
  else
  orderstate="已收货";


temp.message.List[i].State字段在数据库里为int 型,我这个switch语句为什么不执行啊~~~用if ,else语句就好的很……真是无语了,哪位大侠不吝赐教,小女子不胜感激!!!

------解决方案--------------------
在数据库是int,到了页面可未必了
你试试
alert(typeof temp.message.List[i].State);
看看究竟是数值还是字符串,如果是string
就把case后的数字加上引号

------解决方案--------------------
目测 原因就是 temp.message.List[i].State是字符串导致的

而if可以成功是因“==”不检测类型,"0"==0是为true的,===才会检测类型是否相同,"0"===0为false
------解决方案--------------------
switch(parseInt(temp.message.List[i].State))
{
case 0:
orderstate="未付款";
break;
case 1:
orderstate="未发货";
break;
case 2:
orderstate="未收货";
break;
case 3:
orderstate="已收货";
break;
 
}

要转成整形的。
------解决方案--------------------
JScript code
var id=temp.message.List[i].State;//id-0 强制转数字
 switch(id-0)
 {
   case 0:
   orderstate="未付款";
   break;
  case 1:
   orderstate="未发货";
  break;
   case 2:
   orderstate="未收货";
  break;
   case 3:
  orderstate="已收货";
 break;
 }
 alert(orderstate);

------解决方案--------------------
// switch(parseInt(temp.message.List[i].State))
/// {
// case 0:
// orderstate="未付款";
// break;
// case 1:
// orderstate="未发货";
// break;
// case 2:
//// orderstate="未收货";
// break;
// case 3:
// orderstate="已收货";
// break;
//
// }