用数字替换表中的逗号点

Replace dots with comma in a table with numbers

本文关键字:数字 替换      更新时间:2023-09-26

我有一个表,里面装满了来自AJAX调用的数据,所有这些数据(包括数字和字符串)都像往常一样插入td和tr标记中。我需要用逗号替换小数中的所有点,但我不想手动调用每个中的方法"replacewith()"。我想到了这样的东西:

$( document ).ready() {
   $(#"<tr>").isNumeric().replaceWith('.', ',');
}

这样,当页面收费时,jquery会自动检测表单元格中的数字,并用逗号替换它们的数字。

我甚至不知道这个想法是否可行。。。不过,你有什么建议吗?

试着给你的表一个行为类,然后在文档准备中使用这样的东西:

$(function() {
 $('.myTable td').each(function () {
  if($.isNumeric($(this).html())) {
    $(this).html($(this).html().replace('.', ','));
  }
 });
});

jsfiddle在这里:https://jsfiddle.net/wtzkbm7n/

当元素添加到页面中时,无法自动检测。您可以使用AJAX全局事件来检测何时进行AJAX调用,并使用计时器等待结果得到处理,但这意味着您必须为每个AJAX调用检查页面中的所有表单元格,在单元格得到纠正之前会有一段延迟,而且它仍然无法覆盖所有情况。

手动调用函数是一项额外的工作,但这是最可靠、最有效的方法

您可以使用要处理的元素来调用函数。这样就不必浏览整个页面中的所有表格单元格。

查找表单元格而不是表行。您应该查看单元格中的节点,而不仅仅是替换其中的任何内容,否则您可能会混淆实际上不是文本的代码部分。要处理嵌套元素,您可以为任何不是文本节点的节点递归调用函数。

示例:

function fixPeriods(elements) {
  elements.contents().each(function(i, el){
    if (el.nodeType == 3) {
      if ($.isNumeric(el.data)) {
        el.data = el.data.replace(/'./g, ',');
      }
    } else {
      fixPeriods($(el));
    }
  });
}
fixPeriods($('#Bjursta td'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="Bjursta">
  <tr><td>3.14</td><td>4.5<b>2.3</b>1.8</td></tr>
  <tr><td>1.337</td><td>Not a number.</td></tr>
  <tr><td>7.65</td><td>127.0.0.1</td></tr>
</table>