1

我正在寻找一种使用 Javascript(首选 Jquery)使 html 表表现得像 excel 的方法。这是我的问题。我做了一个这样的表:

 <table>
       <tr>
          <td id="A1">10</td>
          <td id="B1">10.5</td>
       </tr>
       <tr>
          <td id="A2">5</td>
          <td id="B2" formula="A1+B1+A2"></td>
       </tr>
 </table>

每个 td 都有一个 id,其中一些 td 添加了一个公式属性。我想计算那些公式,把公式的值给td。

在上表中,在这里,我想分配B225.5(B2=A1+B1+A2)

看起来像这样:

<td id="B2" formula="A1+B1+A2">25.5</td>

任何人都可以给我一个线索吗?谢谢。

PS:这是我找到的一些资源,但它们并没有解决我的问题

  1. DOM 上类似电子表格的公式

  2. http://zaach.github.com/jison/docs/


非常感谢@palindrom。我终于根据您的回答解决了我的问题。

这是我的代码:

    $("td[formula]").each(function(){
        //1 get formula attribute
        var formula = $(this).attr('formula');

        //2 use regex to make expression, with the surpport of "A122", "AB1" and more
        var expression = formula.replace(/([A-Z]+[0-9]+)/g, "parseFloat(\$('#$1').html())") ;

        //3 eval the expression
        var result = eval( expression );

        //4 set the value
        $(this).html(result);
     });
4

3 回答 3

4

应该适用于简单的数学,没有尝试:

$("td[formula]").each( function() {
  this.html( eval( this.attr("formula").replace(/[a-z][0-9]/g, "\$('#$0').html()") ) );
} );

编辑: 如果您在公式中有 sum 之类的函数,请将它们实现为 javascript 函数,它们也应该可以工作。

于 2013-01-30T12:13:23.070 回答
3

即使为时已晚,试试这个插件https://github.com/xsanisty/jquery-calx

我已经在其核心中使用 jison 解析器开发它,它会像你想要的那样解析 data-formula 属性中的公式

于 2013-06-29T14:17:17.133 回答
0

这是我编写的一个 html 表格,其中为每一行计算了一个公式(请参阅 iframe 源代码)。
该公式是用 JavaScript 编写的(尽可能复杂),其中 [abc] 被替换为 id=abc (来自标题的权重)的单元格的值,而 {abc} 被替换为来自同一列的单元格中的文本线。
列是可排序
的 权重可由用户修改,它们会被记录在 cookie 中。

希望这能有所帮助。

于 2015-05-09T08:20:15.750 回答