循环通过js数组和变量赋值不起作用

时间:2011-04-18 06:51:40

标签: javascript jquery

我有js代码的价格,自从过去几天以来一直困扰我,下面是代码段, 问题是在处理ajax响应期间。关于这段代码的奇怪之处在于它在我的本地机器上工作正常,但在在线服务器上无法正常工作,我已经通过代码对问题进行了评论。

关于此代码的一个奇怪之处是,当我在线提交时,currFieldtempfieldDivId变量根本不起作用temp变量(我添加了它)用于调试)在警报中打印正确的值。但它在交换机情况下失败了。 在开关中,它始终属于默认选项并打印“不匹配”。

 $.ajax({
                type: "POST",
                url: "components/form/form_processing.php",
                data: dataStringfrmFlds,
                cache:false,
                success: function(opt){

                    alert(opt);// opt is fine, returns:  ship_to,first_notify_party,consignee,shipment_type,packaging_requirements,testing_requirements,date,request_expected_date,order_ponunber

                    var defaultFields = opt.split(',');
                    var numFields = defaultFields.length;

                    for(i = 0; i < numFields; i++){
                          var temp              = "";   

                          var currField         = defaultFields[i];
                          var tempfieldDivId    = "def_"+currField;

                          //these doesnt work
                          $(tempfieldDivId).show();
                          $('#'+currField).attr('required','required');

                           temp = currField;
                           alert(temp); //this does print the field name in the alert   

                           //these doesnt work either      
                           switch(temp){

                                 case "os_id":
                                 $("#def_os_id").show();
                                 break;

                                 case "ff_id":
                                 $("#def_ff_id").show();
                                 break;

                                 case "fnp_id":
                                 alert("HI there");
                                 $("#def_fnp_id").show();
                                 break;

                                 case "cinfo_id":
                                 $("#def_cinfo_id").show();
                                 break;

                                 case "order_date":
                                 $("#def_order_date").show();
                                 break;

                                 case "order_shiptype":
                                 $("#def_order_shiptype").show();
                                 break;

                                 case "order_portdis":
                                 $("#def_order_portdis").show();
                                 break;

                                 case "order_requestform":
                                 $("#def_order_requestform").show();
                                 break;

                                 case "order_specialinstructions":
                                 $("#def_order_specialinstructions").show();
                                 break;

                                 case "order_packreq":
                                 $("#def_order_packreq").show();
                                 break;

                                 case "order_testreq":
                                 $("#def_order_testreq").show();
                                 break;

                                 case "order_reqexdate":
                                 $("#def_order_testreq").show();
                                 break;

                                 default:
                                alert("No match");//this is printed out all the times
                                 break;
                               }//end of switch
                        }//end of for loop
                  }
            });

如果有人能帮助我,我将非常感激。谢谢。

1 个答案:

答案 0 :(得分:2)

  1. $(tempfieldDivId).show();您是否需要在tempfieldDivId之前添加“#”?
  2. optship_to,first_notify_party,consignee,shipment_type,packaging_requirements,testing_requirements,date,request_expected_date,order_ponunber 我在switch声明中没有看到任何一个匹配任何情况,当然它每次都会降为默认值。