2012-08-14 69 views
0

我一直在研究一些Javascript代码来对HTML表格执行一些数学运算。它首先计算一行的平均值,然后从菜单中计算具有相同选择的所有行的平均值的总和。获取NaN而不是值

平均计算工作正常,但我打破了与平均总数的东西。我设置一个样品的jsfiddle:

http://jsfiddle.net/fmdataweb/c4gJU/3/

如果选择“温和”从菜单中的风险,并表示小时每星期周,每年它会计算平均输入一些数字,但它然后应该将平均值放入中等细胞总数中。如果将菜单选项更改为“高”,则相同。

欣赏是否有人能指出我要去哪里错 - 我是一个Javascript新手在这个阶段。

回答

5

选择器$('#lastYear tr:has(.risk)').eq(i).find('td:last input')与任何元素都不匹配。

TEST

如果您插入行alert($('#lastYear tr:has(.risk)').eq(i).find('td:last input').length)var qty = parseFloat(...)下方弹出窗口将显示0

EDIT

var qty = parseFloat($('#lastYear tr:has(.risk)').eq(i).find('td:last').prev().find('input').val()); 

正如@Diego指出的那样,原来的代码匹配具有按钮,而不是一个input的细胞。上面的代码在最后一个之前选择单元格,然后获取其输入。不过,我建议你使用自定义类或ID来让你的选择更短,更容易阅读。

+0

嗨,谢谢你。我不确定这里的问题是什么,或者我需要做什么来解决它,也就是说为什么它不匹配任何元素? – user982124 2012-08-14 13:29:42

+1

它不匹配任何元素,因为最后一个TD不包含输入字段,而是一个锚点。 – Diego 2012-08-14 13:34:46

+0

更具体地说,'td:last'会匹配以下元素,在你的情况下:'td class =“button mt5”>Add another activity',它位于包含输入字段的TD之后。因此,你看的TD不是最后一个,而是倒数第二。我强烈建议简化你的选择器并为这些元素使用标识符,而不是按位置查看(这很少是件好事)。 – Diego 2012-08-14 13:37:01

相关问题