jQuery:查找表值
我正在尝试创建一个表作为查找表。通常,我会在服务器端执行此操作,但在本例中,我只有一个html表,该表将由客户端输入 基本上,在填写表单时,他们会给我两个值,分别在a列和B列中。然后表单需要使用C列中的相应值进行计算。a列重复多次,而不是多次输入,使用rowspan属性,这似乎真的使计算复杂化了,但这将是一个很大的改变(这可能是可能的,但我宁愿避免) 简化版:jQuery:查找表值,jquery,html-table,lookup,Jquery,Html Table,Lookup,我正在尝试创建一个表作为查找表。通常,我会在服务器端执行此操作,但在本例中,我只有一个html表,该表将由客户端输入 基本上,在填写表单时,他们会给我两个值,分别在a列和B列中。然后表单需要使用C列中的相应值进行计算。a列重复多次,而不是多次输入,使用rowspan属性,这似乎真的使计算复杂化了,但这将是一个很大的改变(这可能是可能的,但我宁愿避免) 简化版: <table> <thead> <tr><th>Column A</t
<table>
<thead>
<tr><th>Column A</th><th>Column B</th><th>Column C</th></tr>
</thead>
<tbody>
<tr>
<td rowspan="3">val1</td>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td rowspan="2">val2</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>10</td>
<td>15</td>
</tr>
</tbody>
</table>
柱A柱B柱C柱
瓦尔1
1.
2.
2.
2.
2.
3.
瓦尔2
4.
5.
10
15
因此,如果他们输入:
val1和1->2
val2和4->5
val2和10->15
我的一个想法是首先将表解析为嵌套数组,然后使用它。这似乎有效,但我想让其他人对处理这一问题的最佳方法发表意见。如果我可以仅仅基于DOM进行查询/过滤,它似乎会占用更少的内存,但rowspan属性似乎再次让这些解决方案变得丑陋
编辑:更正在tr标记上使用第二个rowspan属性而不是td标记
编辑:尝试通过示例部分澄清,您可能会查找任何行,我认为最好的方法(而不是使用表单数据服务器端)是在表单数据提交之前直接使用jQuery处理表单数据,而不是使用HTML结果
但是,如果您无法控制它,这将把每个“val#”行span的“C”列值的第一行带入一个对象,该对象由每个“val#”字符串设置键,您可以在其中使用它(例如,通过for in循环)。您应该在表标记中添加一个“id”属性(例如:id=“myTable”),因为这将优化jQuery选择器
$(window).ready(function() {
var vals = {}, $table = $('#myTable');
$table.find('td[rowspan]').each(function(i,e) {
$(e).siblings().each(function(j,s) {
var html = e.innerHTML, key = (html.match(/^[a-z0-9]+$/)) ? html : i.toString();
vals[key] = parseInt($(s).html(), 10);
});
});
for(var val in vals) {
if(!vals[val]) continue;
vals[val] = vals[val] + 20;
alert(vals[val]); // alerts 22, then 25
}
});
那么您只需要每个“val1”和“val2”部分下的第一行值?(例如:如果val1和1存在,val1只使用“2”?如果val2和4存在,val2只使用数字5进行计算?)第二行是否也有打字错误?(应该在td标签中,对吗?)