Javascript 循环使用格式错误的HTML表代码jQuery

Javascript 循环使用格式错误的HTML表代码jQuery,javascript,jquery,json,sorting,Javascript,Jquery,Json,Sorting,因此,我有一个由我的客户机生成的html表。我没有兴趣改变他们在这个时候如何生成代码,他们也没有 <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0> <TR HEIGHT=16> <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF> <B><FONT style=FONT-SIZE:10pt FACE

因此,我有一个由我的客户机生成的html表。我没有兴趣改变他们在这个时候如何生成代码,他们也没有

<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=16>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:10pt FACE="Arial" COLOR=#000000>Chef's Selections for Tuesday, April 25, 2017</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>SPRING FLING! Please ask us about our Bell's Beer Pairing! May 22nd!</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=19>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:12pt FACE="Arial" COLOR=#000000>Soups</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>Beef Vegetable</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>Cream of Tomato</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=19>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:12pt FACE="Arial" COLOR=#000000>Lunch Selections</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=16>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:10pt FACE="Arial" COLOR=#000000>Butterflied Hot Dog</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>all beef butterflied hot dog, grilled, American cheese, mustard, bacon, pickle spear, French </FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=12>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>fries $6.50</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=16>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:10pt FACE="Arial" COLOR=#000000>Pulled BBQ Pork Sliders</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>Two tender smoked pulled pork sliders, barbeque sauce, Cheddar cheese, house made coleslaw, </FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=12>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>French fries $8</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=16>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:10pt FACE="Arial" COLOR=#000000>Grilled Chicken Avocado Club Sandwich</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>Boneless chicken breast char-grilled, avocado, Swiss cheese, bacon, lettuce, tomato, mayonnaise, </FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=12>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>house made macaroni salad $10.50</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=19>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:12pt FACE="Arial" COLOR=#000000>Desserts</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>Chocolate Oreo Cream Cake | Kentucky Bourbon Pecan Pie</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>Double Chocolate Peppermint Brownie w/ Mint Chocolate Chip Ice Cream &amp; Hot Fudge+</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>Brownie Bottom Sundae | Hot Fudge Cream Puff</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>Cr&egrave;me Brulee+ | Vanilla Cheesecake</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>Key Lime Pie | Coconut Macaroon w/ Sorbet++</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>+ Gluten Free ++ Gluten and Dairy Free</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=16>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:10pt FACE="Arial" COLOR=#000000>*</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=14>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>* These items are cooked to order and the consumption of raw or undercooked meats, fish or shellfish </FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=12>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <FONT style=FONT-SIZE:8pt FACE="Arial" COLOR=#000000>may increase your risk of food borne illness.</FONT>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=19>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:12pt FACE="Arial" COLOR=#000000>Drink Specials</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=16>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:10pt FACE="Arial" COLOR=#000000>House Made SANGRIA $6 Glass |  $16 Carafe</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=19>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:12pt FACE="Arial" COLOR=#000000>Rotating Wine</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=16>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:10pt FACE="Arial" COLOR=#000000>The Prisoner Red Blend, Napa Valley, CA '15 | $66 Btl</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=16>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:10pt FACE="Arial" COLOR=#000000>Balletto Pinor Noir, Sonoma, '13 | 8 oz. $15 | Btl $46</FONT></B>
            </TD>
        </TR>
    </TABLE>
    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
        <TR HEIGHT=16>
            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF>
                <B><FONT style=FONT-SIZE:10pt FACE="Arial" COLOR=#000000>Red Diamond Malbec, Mendoza-Argentina, '12 | 8 oz. $9 | Btl $28</FONT></B>
            </TD>
        </TR>
    </TABLE>

我想循环,直到我点击文本值Soups,然后将接下来的几行值放入Soups数组,直到我进入“午餐选择”,然后只存储主菜的标题,而不是描述。任何帮助都将不胜感激。

表格包含
行[]
,这些行本身包含
单元格[]
。无法直接从
表中获取
单元格[]

您可以使用
table.getElementsByTagName('td')
作为快捷方式,前提是没有嵌套的表

否则,您应该循环遍历每个
行[]
,在该循环中,您可以循环遍历
单元格[]

var tables=document.getElementsByTagName('table'),
我
对于(i=0;i

2017年4月25日(星期二)主厨选择
春游!请询问我们的贝尔啤酒配对!五月二十二日!
汤
牛肉蔬菜
奶油番茄
午餐选择
黄油热狗
全牛肉奶油热狗、烧烤、美国奶酪、芥末、培根、腌菜叉、法式
炸薯条6.50美元
拉式烧烤猪肉滑块
两个嫩烟熏拉猪肉条,烧烤酱,切达奶酪,自制凉拌卷心菜,
炸薯条8美元
烤鸡鳄梨俱乐部三明治
无骨烤鸡胸肉、鳄梨、瑞士奶酪、培根、生菜、西红柿、蛋黄酱、,
自制通心粉沙拉10.50美元
甜点
巧克力奥利奥奶油蛋糕|肯塔基波旁山核桃派
双层巧克力薄荷布朗尼配薄荷巧克力片冰淇淋;热软糖+
布朗尼底圣代|热软糖奶油泡芙
Crè;me Brulee+|香草芝士蛋糕
酸橙派|椰子杏仁饼配冰糕++
+无麸质++无麸质和乳制品
*
*这些食物是按顺序烹调的,食用生的或未煮熟的肉、鱼或贝类
可能会增加你患食源性疾病的风险。
特色饮料
桑格里亚自制玻璃6美元| 16克拉
旋转葡萄酒
囚徒红混合,纳帕谷,约'15 | 66 Btl
巴列托黑比诺,索诺马,'13 | 8盎司。$15 | Btl$46
阿根廷门多萨马尔贝克红钻石,'12 | 8盎司。$9 | Btl$28

您可能需要这样的逻辑:

var str = "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Chef's Selections for Tuesday, April 25, 2017</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>SPRING FLING! Please ask us about our Bell's Beer Pairing! May 22nd!</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Soups</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Beef Vegetable</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Cream of Tomato</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Lunch Selections</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Butterflied Hot Dog</FONT></B></TD> </TR></TABLE>",
  html = $.parseHTML( str ),
  results = [],
  soups = [],
  entrees = [];

var currentArr = results;

$.each( html, function( i, el ) {
  var t = $(el).find("font").text();

  if ("Soups" == t) {
    results.push("<li>" + t + "</li>");
    currentArr = soups;
  }
  else if ("Lunch Selections" == t) {
    results.push("<li>" + t + "</li>");
    currentArr = entrees;
  }
  // you may need another if condition here to switch currentArr back to results
  else {
    currentArr.push("<li>" + t + "</li>");
  }

});
var str=“2017年4月25日周二春游主厨精选!请询问我们的贝尔啤酒搭配!5月22日!汤牛肉蔬菜番茄奶油午餐精选奶油热狗”,
html=$.parseHTML(str),
结果=[],
汤=[],
主菜=[];
var currentArr=结果;
$.each(html、函数(i、el){
var t=$(el.find(“font”).text();
如果(“汤”==t){
结果:按(“
  • ”+t+“
  • ”)键; currentArr=汤; } 否则如果(“午餐选择”==t){ 结果:按(“
  • ”+t+“
  • ”)键; currentArr=主菜; } //您可能需要另一个if条件将currentArr切换回结果 否则{ 当前到达推力(“
  • ”+t+“
  • ”); } });

    请参阅以了解它是如何运行的。希望能有所帮助。

    这将帮助您开始。但是,如果不在行中添加某种类型的类,则很难将项与项的描述分开。我开始使用
    ignoreText
    数组过滤这些描述,该数组目前只适用于一些描述

    若在后端添加类是可行的,那个么将大大简化问题

    //预定义数组中的类别
    //如果需要,可以通过检查字体大小来生成这些`
    var cats=[“汤”、“午餐选择”、“甜点”、“特色饮料”、“旋转葡萄酒”],
    ignoreText=['*','可能增加'],
    currCat=null,
    //创建对象,使用CAT作为键和空数组将数据推送到
    项目=猫。减少(功能(a,c){
    a[c]=[];
    返回a;
    }, {});
    //将是您在ajax中收到的,用于演示的辅助函数
    var ajaxData=get_data()
    $(ajaxData).filter('table')。每个(函数(){
    var txt=$(this).text().trim(),
    iscatheding=cats.indexOf(txt)>-1;
    如果(正在分类){
    currCat=txt
    }
    如果(当前正在加载){
    //查看txt的开头是否在“忽略”数组中
    var isIgnoreText=ignoreText.filter(函数(reg){
    返回txt.indexOf(reg)==0;
    }).长度;
    如果(!isIgnoreText){
    项目[currCat]。推送(txt)
    }
    }
    });
    //在演示中显示数据
    $('pre').text(JSON.stringify(items,null,4));
    //演示的助手函数
    函数get_data(){
    返回`
    2017年4月25日(星期二)主厨选择
    春季狂欢!请询问我们的贝尔啤酒配对!5月22日!
    汤
    牛肉蔬菜
    
    var str = "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Chef's Selections for Tuesday, April 25, 2017</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>SPRING FLING! Please ask us about our Bell's Beer Pairing! May 22nd!</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Soups</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Beef Vegetable</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Cream of Tomato</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Lunch Selections</FONT></B></TD> </TR></TABLE><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR HEIGHT=16>            <TD WIDTH=456 ALIGN=CENTER BGCOLOR=#FFFFFF><B><FONT style=FONT-SIZE:10pt FACE=\"Arial\" COLOR=#000000>Butterflied Hot Dog</FONT></B></TD> </TR></TABLE>",
      html = $.parseHTML( str ),
      results = [],
      soups = [],
      entrees = [];
    
    var currentArr = results;
    
    $.each( html, function( i, el ) {
      var t = $(el).find("font").text();
    
      if ("Soups" == t) {
        results.push("<li>" + t + "</li>");
        currentArr = soups;
      }
      else if ("Lunch Selections" == t) {
        results.push("<li>" + t + "</li>");
        currentArr = entrees;
      }
      // you may need another if condition here to switch currentArr back to results
      else {
        currentArr.push("<li>" + t + "</li>");
      }
    
    });