2012-02-03 75 views
2

我刚刚学习JavaScript,发现自己编写下面的代码,并认为应该有一种方法来使用FOR或WHILE语句来循环这些来获得所需的输出,但它是比基本的FOR循环更复杂一点(至少对我来说)。你能帮我开始吗?JavaScript - 刚刚学习FOR

问题:如果使用FOR,我将如何获得XML节点的数量,以便知道何时需要停止?

在AJAX中有没有办法通过这个不需要使用FOR或WHILE?

附加信息:实际的源代码通过OA40 +和VS50 +变得更大,并且可能会发生变化,因此在XML文件更改时,从XML中获取它将节省大量代码。

编辑 -Update的要求 - XML太大,张贴在这里,所以我一直在网上提供它:http://mdihosting.com/5/Projects/VRACC/xml/categories.xml

function onchange1(catname) { 
    //alert(catname); 
    $("#oatable tbody tr").empty(); 
    $("#epcftable tbody tr").empty(); 
    $.ajax({ 
     type: "GET", 
     url: "xml/categories.xml", 
     dataType: "xml", 
     success: function (xml) { 
     var div = $('#epcf-wrap'); 
     div.empty(); 
     var findval = "Cat" 
     $(xml).find('Cat').each(function() { 
      var cval = $(this).attr('name'); 
      if (catname === cval) { 
       // I bet there is an easier way to do this 
       var xmlArr = []; 
       var xml_EPCF_1_1 = $(this).find('EPCF_1_1').text(); 
       var xml_EPCF_1_2 = $(this).find('EPCF_1_2').text(); 
       var xml_EPCF_1_3 = $(this).find('EPCF_1_3').text(); 
       var xml_EPCF_1_4 = $(this).find('EPCF_1_4').text(); 
       var xml_EPCF_1_5 = $(this).find('EPCF_1_5').text(); 
       var xml_EPCF_1_6 = $(this).find('EPCF_1_6').text(); 
       var xml_EPCF_2_1 = $(this).find('EPCF_2_1').text(); 
       var xml_EPCF_2_2 = $(this).find('EPCF_2_2').text(); 
       var xml_EPCF_2_3 = $(this).find('EPCF_2_3').text(); 
       var xml_EPCF_2_4 = $(this).find('EPCF_2_4').text(); 
       var xml_EPCF_2_5 = $(this).find('EPCF_2_5').text(); 
       var xml_EPCF_3_1 = $(this).find('EPCF_3_1').text(); 
       var xml_EPCF_3_2 = $(this).find('EPCF_3_2').text(); 
       var xml_EPCF_3_3 = $(this).find('EPCF_3_3').text(); 
       var xml_EPCF_3_4 = $(this).find('EPCF_3_4').text(); 
       var xml_EPCF_4_1 = $(this).find('EPCF_4_1').text(); 
       var xml_EPCF_4_2 = $(this).find('EPCF_4_2').text(); 
       var xml_EPCF_4_3 = $(this).find('EPCF_4_3').text(); 
       var xml_EPCF_4_4 = $(this).find('EPCF_4_4').text(); 
       var xml_EPCF_4_5 = $(this).find('EPCF_4_5').text(); 
       var xml_EPCF_4_6 = $(this).find('EPCF_4_6').text(); 
       var xml_EPCF_5_1 = $(this).find('EPCF_5_1').text(); 
       var xml_EPCF_5_2 = $(this).find('EPCF_5_2').text(); 
       var xml_EPCF_5_3 = $(this).find('EPCF_5_3').text(); 
       var xml_EPCF_5_4 = $(this).find('EPCF_5_4').text(); 
       var xml_EPCF_5_5 = $(this).find('EPCF_5_5').text(); 
       var xml_EPCF_5_6 = $(this).find('EPCF_5_6').text(); 
       var xml_EPCF_5_7 = $(this).find('EPCF_5_7').text(); 
       var xml_EPCF_5_8 = $(this).find('EPCF_5_8').text(); 
       var xml_EPCF_6_1 = $(this).find('EPCF_6_1').text(); 
       var xml_EPCF_6_2 = $(this).find('EPCF_6_2').text(); 
       var xml_EPCF_6_3 = $(this).find('EPCF_6_3').text(); 
       var xml_EPCF_6_4 = $(this).find('EPCF_6_4').text(); 
       var xml_EPCF_6_5 = $(this).find('EPCF_6_5').text(); 
       var xml_EPCF_6_6 = $(this).find('EPCF_6_6').text(); 
       var xml_EPCF_6_7 = $(this).find('EPCF_6_7').text(); 
       var xml_EPCF_6_8 = $(this).find('EPCF_6_8').text(); 
       var xml_OA1 = $(this).find('OA1').text(); 
       var xml_OA2 = $(this).find('OA2').text(); 
       var xml_OA3 = $(this).find('OA3').text(); 
       var xml_OA4 = $(this).find('OA4').text(); 
       var xml_OA5 = $(this).find('OA5').text(); 
       var xml_OA6 = $(this).find('OA6').text(); 
       var xml_OA7 = $(this).find('OA7').text(); 
       var xml_OA8 = $(this).find('OA8').text(); 
       var xml_OA9 = $(this).find('OA9').text(); 
       var xml_OA10 = $(this).find('OA10').text(); 
       var xml_VS1 = $(this).find('VS1').text(); 
       var xml_VS2 = $(this).find('VS2').text(); 
       var xml_VS3 = $(this).find('VS3').text(); 
       var xml_VS4 = $(this).find('VS4').text(); 
       var xml_VS5 = $(this).find('VS5').text(); 

       //begin name attr 
       var xml_EPCF_1_1_name = $(this).find('EPCF_1_1').attr('name'); 
       var xml_EPCF_1_2_name = $(this).find('EPCF_1_2').attr('name'); 
       var xml_EPCF_1_3_name = $(this).find('EPCF_1_3').attr('name'); 
       var xml_EPCF_1_4_name = $(this).find('EPCF_1_4').attr('name'); 
       var xml_EPCF_1_5_name = $(this).find('EPCF_1_5').attr('name'); 
       var xml_EPCF_1_6_name = $(this).find('EPCF_1_6').attr('name'); 
       var xml_EPCF_2_1_name = $(this).find('EPCF_2_1').attr('name'); 
       var xml_EPCF_2_2_name = $(this).find('EPCF_2_2').attr('name'); 
       var xml_EPCF_2_3_name = $(this).find('EPCF_2_3').attr('name'); 
       var xml_EPCF_2_4_name = $(this).find('EPCF_2_4').attr('name'); 
       var xml_EPCF_2_5_name = $(this).find('EPCF_2_5').attr('name'); 
       var xml_EPCF_3_1_name = $(this).find('EPCF_3_1').attr('name'); 
       var xml_EPCF_3_2_name = $(this).find('EPCF_3_2').attr('name'); 
       var xml_EPCF_3_3_name = $(this).find('EPCF_3_3').attr('name'); 
       var xml_EPCF_3_4_name = $(this).find('EPCF_3_4').attr('name'); 
       var xml_EPCF_4_1_name = $(this).find('EPCF_4_1').attr('name'); 
       var xml_EPCF_4_2_name = $(this).find('EPCF_4_2').attr('name'); 
       var xml_EPCF_4_3_name = $(this).find('EPCF_4_3').attr('name'); 
       var xml_EPCF_4_4_name = $(this).find('EPCF_4_4').attr('name'); 
       var xml_EPCF_4_5_name = $(this).find('EPCF_4_5').attr('name'); 
       var xml_EPCF_4_6_name = $(this).find('EPCF_4_6').attr('name'); 
       var xml_EPCF_5_1_name = $(this).find('EPCF_5_1').attr('name'); 
       var xml_EPCF_5_2_name = $(this).find('EPCF_5_2').attr('name'); 
       var xml_EPCF_5_3_name = $(this).find('EPCF_5_3').attr('name'); 
       var xml_EPCF_5_4_name = $(this).find('EPCF_5_4').attr('name'); 
       var xml_EPCF_5_5_name = $(this).find('EPCF_5_5').attr('name'); 
       var xml_EPCF_5_6_name = $(this).find('EPCF_5_6').attr('name'); 
       var xml_EPCF_5_7_name = $(this).find('EPCF_5_7').attr('name'); 
       var xml_EPCF_5_8_name = $(this).find('EPCF_5_8').attr('name'); 
       var xml_EPCF_6_1_name = $(this).find('EPCF_6_1').attr('name'); 
       var xml_EPCF_6_2_name = $(this).find('EPCF_6_2').attr('name'); 
       var xml_EPCF_6_3_name = $(this).find('EPCF_6_3').attr('name'); 
       var xml_EPCF_6_4_name = $(this).find('EPCF_6_4').attr('name'); 
       var xml_EPCF_6_5_name = $(this).find('EPCF_6_5').attr('name'); 
       var xml_EPCF_6_6_name = $(this).find('EPCF_6_6').attr('name'); 
       var xml_EPCF_6_7_name = $(this).find('EPCF_6_7').attr('name'); 
       var xml_EPCF_6_8_name = $(this).find('EPCF_6_8').attr('name'); 
       var xml_OA1_name = $(this).find('OA1').attr('name'); 
       var xml_OA2_name = $(this).find('OA2').attr('name'); 
       var xml_OA3_name = $(this).find('OA3').attr('name'); 
       var xml_OA4_name = $(this).find('OA4').attr('name'); 
       var xml_OA5_name = $(this).find('OA5').attr('name'); 
       var xml_OA6_name = $(this).find('OA6').attr('name'); 
       var xml_OA7_name = $(this).find('OA7').attr('name'); 
       var xml_OA8_name = $(this).find('OA8').attr('name'); 
       var xml_OA9_name = $(this).find('OA9').attr('name'); 
       var xml_OA10_name = $(this).find('OA10').attr('name'); 


       var xml_VS1_name = $(this).find('VS1').attr('name'); 
       var xml_VS2_name = $(this).find('VS2').attr('name'); 
       var xml_VS3_name = $(this).find('VS3').attr('name'); 
       var xml_VS4_name = $(this).find('VS4').attr('name'); 
       var xml_VS5_name = $(this).find('VS5').attr('name'); 

       //begin id attr 
       var xml_EPCF_1_1_id = $(this).find('EPCF_1_1').attr('id'); 
       var xml_EPCF_1_2_id = $(this).find('EPCF_1_2').attr('id'); 
       var xml_EPCF_1_3_id = $(this).find('EPCF_1_3').attr('id'); 
       var xml_EPCF_1_4_id = $(this).find('EPCF_1_4').attr('id'); 
       var xml_EPCF_1_5_id = $(this).find('EPCF_1_5').attr('id'); 
       var xml_EPCF_1_6_id = $(this).find('EPCF_1_6').attr('id'); 
       var xml_EPCF_2_1_id = $(this).find('EPCF_2_1').attr('id'); 
       var xml_EPCF_2_2_id = $(this).find('EPCF_2_2').attr('id'); 
       var xml_EPCF_2_3_id = $(this).find('EPCF_2_3').attr('id'); 
       var xml_EPCF_2_4_id = $(this).find('EPCF_2_4').attr('id'); 
       var xml_EPCF_2_5_id = $(this).find('EPCF_2_5').attr('id'); 
       var xml_EPCF_3_1_id = $(this).find('EPCF_3_1').attr('id'); 
       var xml_EPCF_3_2_id = $(this).find('EPCF_3_2').attr('id'); 
       var xml_EPCF_3_3_id = $(this).find('EPCF_3_3').attr('id'); 
       var xml_EPCF_3_4_id = $(this).find('EPCF_3_4').attr('id'); 
       var xml_EPCF_4_1_id = $(this).find('EPCF_4_1').attr('id'); 
       var xml_EPCF_4_2_id = $(this).find('EPCF_4_2').attr('id'); 
       var xml_EPCF_4_3_id = $(this).find('EPCF_4_3').attr('id'); 
       var xml_EPCF_4_4_id = $(this).find('EPCF_4_4').attr('id'); 
       var xml_EPCF_4_5_id = $(this).find('EPCF_4_5').attr('id'); 
       var xml_EPCF_4_6_id = $(this).find('EPCF_4_6').attr('id'); 
       var xml_EPCF_5_1_id = $(this).find('EPCF_5_1').attr('id'); 
       var xml_EPCF_5_2_id = $(this).find('EPCF_5_2').attr('id'); 
       var xml_EPCF_5_3_id = $(this).find('EPCF_5_3').attr('id'); 
       var xml_EPCF_5_4_id = $(this).find('EPCF_5_4').attr('id'); 
       var xml_EPCF_5_5_id = $(this).find('EPCF_5_5').attr('id'); 
       var xml_EPCF_5_6_id = $(this).find('EPCF_5_6').attr('id'); 
       var xml_EPCF_5_7_id = $(this).find('EPCF_5_7').attr('id'); 
       var xml_EPCF_5_8_id = $(this).find('EPCF_5_8').attr('id'); 
       var xml_EPCF_6_1_id = $(this).find('EPCF_6_1').attr('id'); 
       var xml_EPCF_6_2_id = $(this).find('EPCF_6_2').attr('id'); 
       var xml_EPCF_6_3_id = $(this).find('EPCF_6_3').attr('id'); 
       var xml_EPCF_6_4_id = $(this).find('EPCF_6_4').attr('id'); 
       var xml_EPCF_6_5_id = $(this).find('EPCF_6_5').attr('id'); 
       var xml_EPCF_6_6_id = $(this).find('EPCF_6_6').attr('id'); 
       var xml_EPCF_6_7_id = $(this).find('EPCF_6_7').attr('id'); 
       var xml_EPCF_6_8_id = $(this).find('EPCF_6_8').attr('id'); 
       var xml_OA1_id = $(this).find('OA1').attr('id'); 
       var xml_OA2_id = $(this).find('OA2').attr('id'); 
       var xml_OA3_id = $(this).find('OA3').attr('id'); 
       var xml_OA4_id = $(this).find('OA4').attr('id'); 
       var xml_OA5_id = $(this).find('OA5').attr('id'); 
       var xml_OA6_id = $(this).find('OA6').attr('id'); 
       var xml_OA7_id = $(this).find('OA7').attr('id'); 
       var xml_OA8_id = $(this).find('OA8').attr('id'); 
       var xml_OA9_id = $(this).find('OA9').attr('id'); 
       var xml_OA10_id = $(this).find('OA10').attr('id'); 
       var xml_VS1_id = $(this).find('VS1').attr('id'); 
       var xml_VS2_id = $(this).find('VS2').attr('id'); 
       var xml_VS3_id = $(this).find('VS3').attr('id'); 
       var xml_VS4_id = $(this).find('VS4').attr('id'); 
       var xml_VS5_id = $(this).find('VS5').attr('id'); 

       //In this installment of FML, we're going to build an Array 
       xmlArr += "<table id='opttable' align='left'><tr><td>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_1_1_id + "' name='" + xml_EPCF_1_1_id + "' /><label for='epcf11'>" + xml_EPCF_1_1_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_1_2_id + "' name='" + xml_EPCF_1_2_id + "' /><label for='epcf12'>" + xml_EPCF_1_2_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_1_3_id + "' name='" + xml_EPCF_1_3_id + "' /><label for='epcf13'>" + xml_EPCF_1_3_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_1_4_id + "' name='" + xml_EPCF_1_4_id + "' /><label for='epcf14'>" + xml_EPCF_1_4_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_1_5_id + "' name='" + xml_EPCF_1_5_id + "' /><label for='epcf15'>" + xml_EPCF_1_5_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_1_6_id + "' name='" + xml_EPCF_1_6_id + "' /><label for='epcf15'>" + xml_EPCF_1_6_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_2_1_id + "' name='" + xml_EPCF_2_1_id + "' /><label for='epcf11'>" + xml_EPCF_2_1_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_2_2_id + "' name='" + xml_EPCF_2_2_id + "' /><label for='epcf12'>" + xml_EPCF_2_2_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_2_3_id + "' name='" + xml_EPCF_2_3_id + "' /><label for='epcf13'>" + xml_EPCF_2_3_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_2_4_id + "' name='" + xml_EPCF_2_4_id + "' /><label for='epcf14'>" + xml_EPCF_2_4_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_2_5_id + "' name='" + xml_EPCF_2_5_id + "' /><label for='epcf15'>" + xml_EPCF_2_5_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_3_1_id + "' name='" + xml_EPCF_3_1_id + "' /><label for='epcf11'>" + xml_EPCF_3_1_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_3_2_id + "' name='" + xml_EPCF_3_2_id + "' /><label for='epcf12'>" + xml_EPCF_3_2_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_3_3_id + "' name='" + xml_EPCF_3_3_id + "' /><label for='epcf13'>" + xml_EPCF_3_3_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_3_4_id + "' name='" + xml_EPCF_3_4_id + "' /><label for='epcf14'>" + xml_EPCF_3_4_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_4_1_id + "' name='" + xml_EPCF_4_1_id + "' /><label for='epcf11'>" + xml_EPCF_4_1_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_4_2_id + "' name='" + xml_EPCF_4_2_id + "' /><label for='epcf12'>" + xml_EPCF_4_2_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_4_3_id + "' name='" + xml_EPCF_4_3_id + "' /><label for='epcf13'>" + xml_EPCF_4_3_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_4_4_id + "' name='" + xml_EPCF_4_4_id + "' /><label for='epcf14'>" + xml_EPCF_4_4_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_4_5_id + "' name='" + xml_EPCF_4_5_id + "' /><label for='epcf15'>" + xml_EPCF_4_5_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_4_6_id + "' name='" + xml_EPCF_4_6_id + "' /><label for='epcf15'>" + xml_EPCF_4_6_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_5_1_id + "' name='" + xml_EPCF_5_1_id + "' /><label for='epcf11'>" + xml_EPCF_5_1_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_5_2_id + "' name='" + xml_EPCF_5_2_id + "' /><label for='epcf12'>" + xml_EPCF_5_2_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_5_3_id + "' name='" + xml_EPCF_5_3_id + "' /><label for='epcf13'>" + xml_EPCF_5_3_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_5_4_id + "' name='" + xml_EPCF_5_4_id + "' /><label for='epcf14'>" + xml_EPCF_5_4_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_5_5_id + "' name='" + xml_EPCF_5_5_id + "' /><label for='epcf15'>" + xml_EPCF_5_5_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_5_6_id + "' name='" + xml_EPCF_5_6_id + "' /><label for='epcf15'>" + xml_EPCF_5_6_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_5_7_id + "' name='" + xml_EPCF_5_7_id + "' /><label for='epcf15'>" + xml_EPCF_5_7_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_5_8_id + "' name='" + xml_EPCF_5_8_id + "' /><label for='epcf15'>" + xml_EPCF_5_8_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_6_1_id + "' name='" + xml_EPCF_6_1_id + "' /><label for='epcf11'>" + xml_EPCF_6_1_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_6_2_id + "' name='" + xml_EPCF_6_2_id + "' /><label for='epcf12'>" + xml_EPCF_6_2_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_6_3_id + "' name='" + xml_EPCF_6_3_id + "' /><label for='epcf13'>" + xml_EPCF_6_3_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_6_4_id + "' name='" + xml_EPCF_6_4_id + "' /><label for='epcf14'>" + xml_EPCF_6_4_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_6_5_id + "' name='" + xml_EPCF_6_5_id + "' /><label for='epcf15'>" + xml_EPCF_6_5_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_6_6_id + "' name='" + xml_EPCF_6_6_id + "' /><label for='epcf15'>" + xml_EPCF_6_6_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_6_7_id + "' name='" + xml_EPCF_6_7_id + "' /><label for='epcf15'>" + xml_EPCF_6_7_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_EPCF_6_8_id + "' name='" + xml_EPCF_6_8_id + "' /><label for='epcf15'>" + xml_EPCF_6_8_name + "</label><br/>"; 
       xmlArr += "</td><td>"; 
       //Build OA 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA1_id + "' name='" + xml_OA1_id + "' /><label for='oa1'>" + xml_OA1_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA2_id + "' name='" + xml_OA2_id + "' /><label for='oa2'>" + xml_OA2_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA3_id + "' name='" + xml_OA3_id + "' /><label for='oa3'>" + xml_OA3_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA4_id + "' name='" + xml_OA4_id + "' /><label for='oa4'>" + xml_OA4_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA5_id + "' name='" + xml_OA5_id + "' /><label for='oa5'>" + xml_OA5_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA6_id + "' name='" + xml_OA6_id + "' /><label for='oa6'>" + xml_OA6_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA7_id + "' name='" + xml_OA7_id + "' /><label for='oa7'>" + xml_OA7_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA8_id + "' name='" + xml_OA8_id + "' /><label for='oa8'>" + xml_OA8_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA9_id + "' name='" + xml_OA9_id + "' /><label for='oa9'>" + xml_OA9_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_OA10_id + "' name='" + xml_OA10_id + "' /><label for='oa10'>" + xml_OA10_name + "</label><br/>"; 
       xmlArr += "</td><td>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_VS1_id + "' name='" + xml_VS1_id + "' /><label for='vs1'>" + xml_VS1_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_VS2_id + "' name='" + xml_VS2_id + "' /><label for='vs2'>" + xml_VS2_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_VS3_id + "' name='" + xml_VS3_id + "' /><label for='vs3'>" + xml_VS3_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_VS4_id + "' name='" + xml_VS4_id + "' /><label for='vs4'>" + xml_VS4_name + "</label><br/>"; 
       xmlArr += "<input class='checkbox' type='checkbox' id='" + xml_VS5_id + "' name='" + xml_VS5_id + "' /><label for='vs5'>" + xml_VS5_name + "</label><br/>"; 
       xmlArr += "</td></tr></table>"; 
       div.append(xmlArr); 
       $(":input[type='checkbox']").wijcheckbox(); 
      } 

     }); 

     } 
    }); 
} 
+0

'var xml_OA7' ....你需要了解哈希表。这应该是'var xml = {}; xml [“OA7”] = ....'。如果密钥始终与XPath表达式相同,则可以使用循环一次填充整个数据结构。 – Thilo 2012-02-03 04:02:10

+0

@Thilo - 我现在在用Google搜索哈希表 - 你还记得你是如何学到的?任何好的参考? – ChadM 2012-02-03 04:11:38

+1

您几乎可以肯定地消除95%的这段代码。我会想象XML具有一致的结构。如果是这样,你可以利用这个优势,并用大概几行代替所有重复。但是,如果没有看到XML的示例,很难举一个如何去做的例子。 – 2012-02-03 04:18:32

回答

2

这是我对success的回调。

我删除了if (catname === cval) {,因为我不知道catname代表什么。如果你想过滤一个特定的类别,那么可能有不同的方法。

function onchange1(catname) { 
    $("#oatable tbody tr").empty(); 
    $("#epcftable tbody tr").empty(); 
    $.ajax({ 
     type: "GET", 
     url: "xml/categories.xml", 
     dataType: "xml", 
     success: function(xml) { 

      var table = $('<table>', {id: 'opttable',align: 'left'}); 

       // get the Category for the catname passed 
      var category = $(xml).children().children('Cat[name="' + catname + '"]'); 

      var tr = $('<tr>').appendTo(table); // create TR and append to TABLE 
      var td = $('<td>').appendTo(tr); // create TD and append to TR 

       // iterate all children of the current Category 
      category.children().each(function(i, cat_child) { 

        // Grab the name and ID of the current item 
       var id = $(cat_child).attr('id'); 
       var name = $(cat_child).attr('name'); 

        // create INPUT with the attributes of the current 
        // child of Cat, and append to the TD 
       $('<input>', { 
        className: 'checkbox', 
        type: 'checkbox', 
        id: id, 
        name: id 
       }).appendTo(td); 
        // create LABEL with the id attribute of the current 
        // child of Cat and append to TD 
       $('<label>', {for: id, text:name}).appendTo(td); 

       $('<br>').appendTo(td); // create BR element and append to TD 
      }); 
      $('#epcf-wrap').empty().append(table); // Append the table to its container 
     } 
    }); 
} 
+0

你是对的。参数catname从onclick传递并表示类别名称作为下拉列表中的选项。即用户选择下拉菜单“Category 1”,这个代码执行XML – ChadM 2012-02-03 05:25:02

+0

@ChadM中的类别1:在这种情况下,您可以将$(xml).children('Cat')'更改为$(xml)。儿童('猫[name =“+ catname +”]')'。实际上,由于只有一个被创建,我们实际上可以在没有最外层的'.each()'循环的情况下完成它。 – 2012-02-03 05:26:52

+0

忘了一些引号:'$(xml).children('Cat [name =''+ catname +'“]')'...并更新了我的答案。 – 2012-02-03 05:32:41

1

你可以序列化的XML JSON,因此,如果响应的输入参数成功功能,你可以通过获得长度的数据

response.length 

json通常更容易与JavaScript管理。 也许你可以得到XML对象的长度相同的方式与xml.length

也考虑方法的大小()的jQuery http://api.jquery.com/size/

此外,当你执行$(本).find( 'EPCF_1_1')$ (this).find('EPCF_1_2')等,你可以用正则表达式找到所有这些行。 一个例子

$(this+':regex(attribute_name, EPCF_1_[0-9])') 

$('cat_or_element_name:regex(attribute_name, regular_expression)') 

检查jQuery selector regular expressions

1

不知道什么代码试图做的,但我可能会写这样的:

/* 
* We use array instead of object because order matters: 
*/ 
var value_ranges = [ 
    [ 
    ['EPCF_1_', 6], 
    ['EPCF_2_', 5], 
    ['EPCF_3_', 4], 
    ['EPCF_4_', 6], 
    ['EPCF_5_', 8], 
    /* I think you know where this is going ... */ 
    ], 
    [ 
    ['0A', 10] 
    ], 
    [ 
    ['VS', 5] 
    ] 
] 

var html_string = ""; 
for (var x=0; x<value_ranges.length; x++) { 
    var inner_ranges = value_ranges[x]; 

    for (var y=0; y<inner_ranges.length; y++) { 
    var key = inner_ranges[y][0]; 
    var range = inner_ranges[y][1]; 

    html_string += '<td>'; 
    for (var z=1; z<=range; z++) { 
     var txt = $(this).find(key+z).text(); 
     var name = $(this).find(key+z).attr('name'); 
     var id = $(this).find(key+z).attr('id'); 

     html_string += "<input class='checkbox' type='checkbox' id='" + id + "' name='" + id + "' /><label for='" + id + "'>" + name + "</label><br/>"; 
    } 
    html_string += '</td>'; 
} 

现在你所需要做的就是维护这个数组。尽管我不得不说,使用表格进行布局并不是很好。

+0

如果有一种方法来获得#可以使用XML中的EPCF和OA以及VS而不是更新阵列? – ChadM 2012-02-03 04:37:10