Javascript 循环使用格式错误的HTML表代码jQuery
因此,我有一个由我的客户机生成的html表。我没有兴趣改变他们在这个时候如何生成代码,他们也没有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
<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 & 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è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>");
}
});