我在php / mysql中有一个动态表,我按复选框显示/隐藏列。下面的代码片段是javascript的一部分,它隐藏并重新计算总列的单元格值。
function toggleVis(button) {
// Toggle column
cells = $$('.t'+button.name);
cells.invoke(button.checked ? 'show' : 'hide');
// Recaulculate total
$$('tr.row').each(function(row) {
// Initialise to zero
var total = 0;
row.down('.total').textContent = total;
// Sum all visible cells
row.select('td').each(function(cell) {
total += cell.visible() ? parseInt(cell.textContent, 10) : 0;
});
// Write the total in the total cell
row.down('.total').textContent = total;
});
}
当表格内容只是数字时,这很有用,但我现在需要创建另一个货币值为的表格。这会导致总列返回NaN
,大概是因为£符号。我用php格式化这个代码:
<tbody>
<?php do { ?>
<tr>
<td><?php echo $row_rsMISource['Source']; ?></td>
<td><?php echo "£".number_format($row_rsMISource['May'], 2, '.', ','); ?></td>
<td><?php echo "£".number_format($row_rsMISource['Jun'], 2, '.', ','); ?></td>
<td><?php echo "£".number_format($row_rsMISource['Jul'], 2, '.', ','); ?></td>
<td><?php echo "£".number_format($row_rsMISource['Aug'], 2, '.', ','); ?></td>
<td><?php echo "£".number_format($row_rsMISource['Total'], 2, '.', ','); ?></td>
</tr>
<?php } while ($row_rsMISource = mysql_fetch_assoc($rsMISource)); ?>
</tbody>
输出的值为10,169.62英镑,7,053.00英镑或£.0.00
在使用上述发布的js时,是否可以使用货币格式化单元格?
答案 0 :(得分:5)
4 + '£4'; //NaN
4 + parseFloat('£4.3'.replace(/[^\d\.]/g, '')); //8.3
从字符串中删除非数字字符,并将字符串强制转换为数字(因此您获得8.3
,而不是"44.3"
)。
如果您居住的国家/地区使用逗号作为小数点分隔符而非句点,请将\.
替换为,
[编辑 - 针对您的具体示例:]
row.find('td').each(function() {
total += $(this).is(':visible') ? parseFloat($(this).text().replace(/[^\d\.]/g, '')) : 0;
});
那里有相当多的代码更改。