1

我从这些脚本中导出了两个不同的值。

脚本 #1...

//JS for Potential Gen Ed TOC
$(function($) {
    $('#CourseMenu select').change(function() {
        var sum = 0;
        $('#CourseMenu select').each(function(idx, elm) {
            sum += parseFloat(elm.value, 10);
        });

     $('#total_potential').html(Math.min(sum,72).toFixed(2));
    });
});

脚本 #2...

//JS for Potential Gen Ed TOC from Electives only
$(function($) {
    $('#CourseMenu_Electives select').change(function() {
        var sum = 0;
        $('#CourseMenu_Electives select').each(function(idx, elm) {
            sum += parseFloat(elm.value, 10);
        });

     $('#total_potential').html(Math.min(sum,33).toFixed(2));
    });
});

但是,我想从这两个中提取数据并将结果显示在以下 HTML 中...

   <p><fieldset id="PotentialTOC">
      <legend style="font-weight: bold; font-size: 140%;">Potential TOC Evaluation Results</legend>

      <div id="Results" style="text-align:left; font-family: 'Century Gothic', Gadget, sans-serif; font-size:14px;"><br />
        <div>
          <h2><span id="span"></span>
        Potential Gen Ed TOC:&nbsp;&nbsp;<span id="total_potential"></span>
        <br />
        Potential Money Saved: $<span id="total_money"></span>
        <br />
        Potential Class Time Saved:&nbsp;&nbsp;<span id="total_time"></span> weeks
</fieldset></p>

这是一个jsfiddle来展示我到目前为止所做的事情......我不能转移超过 33 个选修学分,总共不能超过 72 个学分。我的脚本布置得很好,但同样,需要将它们组合起来以产生一个值。

4

1 回答 1

0

想到的第一个想法是将每个函数的结果存储在隐藏的 div 中(甚至显示,以便用户可以看到每个选择的权重)。然后在为新选择计算出新的信用总额后,通过仅添加对它有贡献的两列来更新总值。

这将是一个小的更改,只需更改当前值的插入位置,并在每个更改回调中添加一两行,以提取这两个值,解析它们,添加它们,然后更新总 div。

我考虑过完全这样做,只使用 div 中的先前值,但我遇到的问题是你不确定先前的贡献是什么,所以在添加新的之前很难将 div “归零”选择,因为选择不是累积的。一个选择框应该只对最终值做出一项贡献。

编辑:

所以我摆弄小提琴并采用状态对象方法:http: //jsfiddle.net/MCg2d/1

COURSE['Non-electives'] = Math.min(sum, 72).toFixed(2);
var total = (parseFloat(COURSE['Non-electives'], 10) || 0) + (parseFloat(COURSE['Electives'], 10) || 0)
$('#total_potential').html(total);
});

这很粗糙,但它可能比我上面的漫谈更有意义。

于 2013-07-25T23:37:05.033 回答